B 樹的刪除過程

2021-09-05 11:51:43 字數 1104 閱讀 5120

上文我們介紹了b-樹的插入過程,本文我們來介紹b-樹的刪除過程。

在b-樹中刪除節點時,可能會發生向兄弟節點借元素,和孩子節點交換元素,甚至節點合併的過程。

我們以下面的樹為基礎,進行刪除操作。

首先明確一下這個樹的定義。它是乙個5階樹。所以,每個節點內元素個數為2~4個。

我們依次刪除8、16、15、4這4個元素。

首先刪除8,因為刪除8後,不破壞樹的性質,所以直接刪除即可。得到如下

然後刪除16,這導致該節點只剩下乙個13節點,不滿足節點內元素個數為2~4個的要求了。所以需要調整。這裡可以向孩子借節點,把17提公升上來即可,得到下圖。這裡不能和兄弟節點借節點,因為從3,6節點中把6借走後,剩下的3也不滿要求了。另外,也不能把孩子中的15提公升上來,那樣會導致剩下的14不滿足要求。

然後刪除15,刪除15後同樣需要調整。調整的方式是,18上公升,17下降到原來15的位置,得到下圖。

然後刪除元素4,刪除4後該節點只剩下5,需要調整。可是它的兄弟節點也都沒有多餘的節點可藉,所以需要進行節點合併。節點合併時,方式會有多種,我們選擇其中的一種即可。這裡,我們選擇父節點中的3下沉,和1,2,以及5進行合併,如下圖。

但這次調整,導致6不符合要求了。另外,6非根節點,但只有2個孩子,也不符合要求。需要繼續調整。調整的方式是,將10下沉,和6,以及13,18合併為根節點,如下圖。

結束。

gdb跟蹤版面刪除過程

gdb跟蹤bbs中刪除版面的過程 先登陸bbs,比如pid是nnn 數字 gdb src bbs p nnn attach上程序 在menu.ini裡找到對應於 b oarddel 砍掉討論區 功能選單,如下 delboard 0,0,perm blevels,board delete b oard...

B樹的刪除

b樹的刪除自己弄了好長時間,才有一點點的眉目,特此記下來,以供以後複習 一 總之兩條原則 與插入情況相對稱,除了根節點外 根節點個數不能少於1 b樹的關鍵字數不能少於t 1個,對於簡單的刪除情況,我們定位到該關鍵字所在的某個結點中,如果這個節點中關鍵字個數恰好是t 1,如果直接刪除這個關鍵字,就會違...

B樹的刪除操作

把b樹壓縮成陣列的結構,二維的樹是由 一維的陣列 進化 拉伸 而來的,所以我們先還原成 一維陣列 可以簡化對刪除操作的思考 如前趨值 後趨值的概念就是一維陣列中的 實質上,b樹的刪除和二叉樹的刪除很相似,都是用其左 右分支的最大值 最小值來覆蓋 刪除 當前要刪除的關鍵字,然後再遞迴刪除此左 右分支的...