演算法導論二叉搜尋樹

2021-07-16 22:23:24 字數 1022 閱讀 1294

兩天寫完的,沒有認認真真的測試,可能有些bug,自己測試的資料能過,但是我的初始化有些問題,不知道該怎麼表示

//二叉搜尋樹

#include

#include

using namespace std;

struct node

};void inorder_search(node *root1)

}node* tree_search(node *root1,int x)

node* itertive_tree_search(node *root,int x)

return root;

}node* tree_min(node *root1)

node* tree_max(node *root1)

node* tree_successor(node *x1)//x的後繼元素 

return y;

}node* tree_predecessor(node *x1)//x的前繼元素

return y;

}void tree_insert(node *root,int z)

node *zz=new node();

zz->key=z;

zz->p=y;

if(y==null)

root=zz;

else if(y->key>z)

y->lchild=zz;

else

y->rchild=zz;

}void transplant(node *root,node *u,node *v)//用v來替換u,換過去,把父子關係確立 

void tree_delete(node *root,node *z)

//y是z的直接後驅,是他的右孩子,讓y頂替z後,把z的左兒子給y 

transplant(root,z,y);

y->lchild=z->lchild;

y->lchild->p=y;}}

void init(node *root)

int main()

演算法導論 二叉搜尋樹

搜尋樹資料結構支援許多動態集合操作,包括search minimum maximum predecessor successor insert和delete等。因此,我們使用一棵搜尋樹既可以作為乙個字典又可以作為乙個優先佇列。二叉搜尋樹上的基本操作所花費的時間與這棵樹的高度成正比。對於乙個有n個結點...

《演算法導論》筆記 二叉搜尋樹

演算法 資料結構 二叉搜尋樹 binary search tree 是經過一定地組織形成的有特定結構特徵的二叉樹,支援各種動態集合 dynamic set 操作 如insert delete maximum minimum等等 這些操作的時間複雜度與樹的高度成正比。一棵有n個節點的完全二叉樹 com...

演算法導論(5) 二叉搜尋樹

二叉搜尋樹 設x是二叉搜尋樹的乙個結點,如果y是x左子樹的乙個結點,那麼y.key x.key,如果y是x有字數的乙個結點,那麼y.key x.key。二叉樹有三種遍歷的方法 先序遍歷 輸出根的關鍵字在其左右子樹的關鍵字之前。中序遍歷 輸出根的關鍵字在其左右子樹的關鍵字之間。後序遍歷 輸出根的關鍵字...