二叉查詢樹是一種支援查詢,刪除,排序的數
在排序上可以說是動態 的, 即隨時告訴我們排序(中序遍歷)
在二元排序樹b中查詢x的過程為:
若b是空樹,則搜尋失敗,否則:
若x等於b的根節點的資料域之值,則查詢成功;否則:
若x小於b的根節點的資料域之值,則搜尋左子樹;否則:
查詢右子樹。
插入則是一直找
刪除分情況:
a:無子樹,直接刪
b:有乙個子樹,直接將其子樹代替刪除點
c:有兩個子樹
1.先找左子樹的最大值,向右遞迴直至無右子樹的點最大q=
p;
s=p-此時p為刪點位址,q為最右子父,s為最右子>lchild;
while
(s->rchild)
p-直接搬移本身的值,不必刪位址,這樣不需要維護關係>data = s-
>data;
問題轉化為刪無右子樹的s
if(q!=p)
q->rchild = s-
>lchild;
//維護s,把s跳過
else
q->lchild = s-
>lchild;
//還是維護被刪代替p(該子樹的根)的s 此處s為q的左子樹根 故特判
delete s;
}
自此樹便建立了
二叉樹 二叉查詢樹
構建二叉樹,判斷是否為二叉查詢樹,遞迴先序遍歷,非遞迴中序遍歷 include include include include using namespace std 二叉樹結點 struct treenode 鍊錶結點 struct listnode struct tempnodetempnode...
二叉樹 二叉查詢樹
二叉樹 binary tree 一種樹型結構,每個節點最多擁有兩個節點。如下圖 幾種型別的二叉樹 1.full binary tree 每個節點的孩子數 是 0 或者 2.對高度沒有要求。如下圖 2.perfect binary tree 這個就是最完美的樹,顧名思義,所有葉子節點都有相同的深度,並...
樹(樹,二叉樹,二叉查詢樹)
1.定義 n n 0 個結點構成的有限集合。當n 0時,稱為空樹 2.對於任一棵非空樹 n 0 它具備以下性質 1 樹中有乙個稱為 根 root 的特殊結點,用 r 表示 2 其餘結點可分為m m 0 個互不相交的有限集t1,t2,其中每個集合本身又是一棵樹,稱為原來樹的子樹。3.樹的一些性質 1 ...