二叉查詢樹

2022-06-30 15:06:12 字數 1881 閱讀 2481

二叉查詢樹(二叉搜尋樹或二叉排序樹)是一種資料結構,採用了圖的樹形結構。資料儲存於二叉查詢樹的各個節點中。

每個結點最多有兩個子結點,結點中的數字就是儲存的資料。

1、性質

二叉查詢樹有兩個性質。第乙個是每個結點的值均大於其左子樹上任意乙個結點的值。比如15、8大於它左子樹上任意乙個結點的值。第二個是每個結點的值均小於其右子樹任意乙個結點的值。比如15小於其右子樹上的23、17、28。

根據此,得出結論:

第一,二叉查詢樹的最小結點要從頂端開始,往其左下的末端尋找。比如此處最小值是3。

第二,二叉查詢樹的最大結點要從頂端開始,往其右下的末端尋找,這裡的最大值是28。

2、新增資料

(1)新增數字1

因為1<15,所以將其往左移

首先,從二叉查詢樹的頂端結點開始尋找新增數字的位置。將需要新增的1與該結點中的值進行比較,小於它則往左移,大於它則往右移。

因為1<9,所以將1往左移。

由於1<3,所以繼續將1往左移,但前面沒有結點了,就把1作為新結點新增到左下方。

新增1的資料就完成了。

(2)新增數字4

因為4<15,所以將其往右移。

首先從二叉查詢樹的頂端結點開始尋找新增數字的位置。

因為4<9,所以將其往左移

因為4>3,所以將其往右移。

因為4<8,所以需要將其往左移,但是因為前面沒有結點了,所以需要把4作為新的結點新增到左下方。

於是4的新增操作就完成了。

3、刪除資料

(1)刪除28

如果要刪除的結點沒有子結點,直接進行刪除該結點即可。

(2)刪除結點8。

如果要刪除的結點只有乙個子結點,那麼先刪除目標結點

然後再把子結點移動到被刪除結點的位置上。

(3)刪除結點9

如果刪除的結點有兩個子結點,那麼先刪除目標結點。

然後在被刪除結點的左子樹中尋找最大結點

最後將最大結點移到被刪除結點的位置。現在就能滿足二叉查詢樹性質的前提下刪除結點了。如果需要移動的結點還有子結點,就遞迴執行前面的操作。

4、查詢資料

比如查詢12,

從二叉查詢樹的頂端結點開始往下查詢,和新增資料一樣,將12和結點中的值進行比較,小於該結點的值則左移,大於則右移。

因為12>4,所以需要右移

這樣就找到結點12了。

二叉樹 二叉查詢樹

構建二叉樹,判斷是否為二叉查詢樹,遞迴先序遍歷,非遞迴中序遍歷 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 ...