兩天寫完的,沒有認認真真的測試,可能有些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。二叉樹有三種遍歷的方法 先序遍歷 輸出根的關鍵字在其左右子樹的關鍵字之前。中序遍歷 輸出根的關鍵字在其左右子樹的關鍵字之間。後序遍歷 輸出根的關鍵字...