二叉查詢樹的基本操作

2022-09-12 16:15:33 字數 1531 閱讀 6005

二叉查詢樹:對於樹中的每個節點x,它的左子樹所有關鍵字小於x的關鍵字,而右子樹的所有關鍵字大於x的關鍵字。

二叉查詢樹的平均深度是o(logn)。

二叉查詢樹的刪除操作:

如果有乙個兒子,調節父節點指標繞過該節點後被刪除。

如果有兩個兒子,用右子樹的最小資料代替該節點的資料,並遞迴地刪除那個節點(現在它是空的)。因為右子樹的最小節點不可能有左兒子,所以第二次刪除更容易。

1

#ifndef _tree_h23

struct

treenode;

4 typedef struct treenode *position;

5 typedef struct treenode *searchtree;67

searchtree makeempty(searchtree t);

8position find(elementtype x, searchtree t);

9position findmin(searchtree t);

10position findmax(searchtree t);

11searchtree insert(elementtype x, searchtree t);

12searcgtree delete(elementtype x, searchtree t);

13elementtype retrieve(position p);

1415

#endif

1617

struct

treenode

1823

2425

searchtree makeempty(searchtree t)

2633

return

null;34}

3536

37position find(elementtype x, searchtree t)

3848

4950

position findmin(searchtree t)

5159

60position findmax(searchtree t)

6167

6869

searchtree insert(elementtype x, searchtree t)

7081}82

else

if (x < t->element)

83 t->left = insert(x, t->left);

84else

85 t->right = insert(x, t->right);

8687

return

t;88}89

9091

searchtree delete(elementtype x, searchtree t)

92110

//one or zero children

111else

112120

121return

t;122 }

二叉排序樹(二叉查詢樹)的基本操作

二叉排序樹的查詢屬於動態查詢的範疇,根據查詢過程中是否對錶進行修改,可以把查詢分為靜態查詢和動態查詢。動態查詢表的特點是 表結構本身是在查詢過程中動態生成的,即對於給定的key值,若表中存在其關鍵字等於key的記錄,則查詢成功並返回,否則插入關鍵字等於key的記錄。二叉排序樹或者是一顆空樹,或者是具...

二叉樹的性質以及二叉查詢樹的基本操作

樹 tree 是n n 0 個結點的有限集。在任意一棵非空樹中 1 有且僅有乙個特定的被稱為根 root 的結點 2 當n 1時,其餘結點可分為m m 0 個互不相交的有限集t1,t2,tm,其中每乙個集合本身又是一棵樹,並且稱為根的子樹 subtree 度 結點擁有的子樹數稱為結點的度 degre...

二叉查詢樹的基本操作C 實現

最近在看胡凡的 演算法筆記 將其中的內容理解了一下,然後進行實現 include using namespace std class node 二叉查詢樹的查詢 void search node root,int x if root data x else if root data x else 二...