2 3樹的插入和刪除原理

2022-06-23 04:51:17 字數 1942 閱讀 2095

多路查詢樹

2-節點,含有乙個值和兩條鏈結

3-節點,含有兩個值和三條鏈結

所有葉子必須都在同一層次

建立乙個二節點作為根節點即可
插入3: 直接插入,將該二節點變為三節點即可

插入5: 

1.根據左小右大,5應該插到6的左邊,但是6所在的節點已經是三節點,且由於葉子節點必須要在同一層次(不能單獨往下延伸)

2.不能夠往下走,那就只能往上走,且父節點是二節點可擴充套件為三節點

3.將擴充套件節點的右節點的最左元素6上移,調整葉子節點(結果如圖)

插入11:

1.根據數值應該插入到10的右邊,但10所在的節點已經為三節點了,同時其父節點也為三節點

2.繼續往上找,父節點的父節點為二節點可擴充套件

3.將擴充套件的節點的右節點的最左元素12上移

4.9,10,11按照中序遍歷的方式調整

插入2:

1.按照數值大小,應該插入到1的右邊,但1所在節點及其上面的所有節點都是三節點了,擠不下了,這時候就要增加高度了

2.從下往上拆,最後全部節點都變為二節點

直接刪除,將三節點變為二節點即可
刪除1:

1.刪掉1

2.左旋轉,將4放到1所在的位置,6放到4所在的位置

刪除4:

1.首先要知道一點:圖中7是根節點的直接前繼,根節點的直接後繼則是9

2.將後繼9拿過來幫忙,放到8的位置,8則去左邊幫忙,放到7的位置(本質也是左旋)

3.6,7也左旋調整

刪除10:

1.將父節點由三節點變為二節點

2.擴充套件原先父節點的中間節點

如圖,節點均為二節點

刪除8:

1.思路與上面插入的情況五相反,所有節點都不能拆分了,那就擴大寬度縮小一層

刪除4:

1.右孩子最左元素上移即可

2.右孩子變為二節點

其餘刪除非葉子節點的情況處理方法類似,就不贅述了

2 3查詢樹的插入與刪除

本片部落格前面部分擷取自演算法 第4版 定義 要判斷乙個鍵是否存在樹中,先將它和根節點中的鍵比較,如果它和其中任意乙個相等,查詢命中 否則就根據比較的結果找到指向相應區間的連線,並在其指向的子樹中遞迴地繼續查詢,如果找到了空連線上,查詢未命中。插入之前,先要對2 3樹進行一次未命中的查詢 1 向2 ...

2 3樹的插入

2 3樹所有葉子都在同乙個層次,也就是說每一層的葉子數目都是相等的,如圖 一 插入資料3,插入的時候從根結點8發現,比8大往左走,到達4,發現比4小,繼續往左走,然後發現比1大,並且此時1結點只有乙個結點,所以可以插入,如圖 二.插入5 插入的時候從根結點8發現,比8大往左走,到達4,發現比4大,繼...

B樹的定義 插入和刪除

b樹是為磁碟或其他直接訪問的輔助儲存裝置而設計的一種平衡搜尋樹。一棵b樹是具有以下性質的有根樹 1.每個結點x有下面的屬性 a.x.n,當前儲存在結點x中的關鍵字個數 b.x.n個關鍵字本身,x.key 1 x.key 2 x.key x.n 以非降序存放,使得 x.key 1 x.key 2 x....