二叉查詢樹

2021-08-27 02:47:42 字數 754 閱讀 6067

二叉查詢樹是一種支援查詢,刪除,排序的數

在排序上可以說是動態 的, 即隨時告訴我們排序(中序遍歷)

在二元排序樹b中查詢x的過程為:

若b是空樹,則搜尋失敗,否則:

若x等於b的根節點的資料域之值,則查詢成功;否則:

若x小於b的根節點的資料域之值,則搜尋左子樹;否則:

查詢右子樹。

插入則是一直找

刪除分情況:

a:無子樹,直接刪

b:有乙個子樹,直接將其子樹代替刪除點

c:有兩個子樹

1.先找左子樹的最大值,向右遞迴直至無右子樹的點最大q=

p;

s=p-

>lchild;

while

(s->rchild)

此時p為刪點位址,q為最右子父,s為最右子

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 ...