二叉查詢樹(來自演算法導論)

2021-06-20 23:07:29 字數 1338 閱讀 5026

#include using namespace std;

typedef struct treenode*treepoint;

//採用迴圈而非遞迴的插入樹節點。

void tree_insert(treepoint& root,int key)

else

x=x->right;

} if (y==null)//樹為空時

else

else

}}//中序遍歷樹

void print_tree(treepoint root)

print_tree(root->left);

coutprint_tree(root->right);

}treepoint tree_search(treepoint root,int key)

else

root=root->right;

} return root;

}treepoint tree_max(treepoint root)

return root;

}//找到樹中最小元素。

treepoint tree_min(treepoint root)

return root;

}//找到某個節點中序遍歷情況下的後繼節點。

treepoint tree_successor(treepoint x)

treepoint y;

y=x->pre;

while (y!=null&&x==y->right)

return y;

}//來自演算法導論第二版p156.z指標指向需要刪除的元素

void tree_delete(treepoint root,treepoint z)

else

y=tree_successor(z);

if (y->left!=null)

else

x=y->right;

if (x!=null)

if (y->pre==null)

else if (y==y->pre->left)

else

y->pre->right=x;

if (y!=z) }

int main()

; for (int i=0;i<12;i++)

cout<<"中序遍歷樹結果\n";

print_tree(root);

coutcout<<"刪除樹中元素\n";

tree_delete(root,p);

print_tree(root);

cout

}

演算法導論 二叉查詢樹

部分實現,用insert生成二叉查詢樹。暫無delete函式。建立查詢樹是用insert逐個插入。比較簡陋,希望有所幫助。includeusing namespace std struct node class searchtree void create void insert node newn...

演算法導論之二叉查詢樹

還要認真學習啊,功力不夠,要多向師兄師姐學習,自己也要努力。includeusing namespace std 首先進行二叉樹的一些操作的 補上之前欠下的東西 class bintree class treenode class treenode int element,treenode lchi...

演算法導論 二叉搜尋樹

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