1. 程式人生 > >B樹學習筆記之B樹的刪除

B樹學習筆記之B樹的刪除

B樹的下溢發生於刪除關鍵碼後違反了B樹的性質 。


一. 旋轉

  • 如果左右兄弟存在,則間接向左右兄弟借關鍵碼

    

二. 合併


B樹高度的減少只會發生於根節點的兩個孩子合併 。

三. 例項


1. 刪除249


不急於合併,先左顧右盼,向有兄弟接一個關鍵碼。


刪除操作順利結束。

2. 刪除619


664沒有左兄弟,右兄弟處於即將下溢的邊緣臨界狀態,旋轉技巧已不適用,選擇合併。


此時,父節點發生了下溢,繼續合併。


整棵B樹的高度降低了一層,這時B樹高度得以下降的唯一可能。

四. 總結

B樹被設計成相對矮寬,而對B樹的訪問是由一系列的外存操作記憶體操作交替組成的。有多少外存操作,就有多少記憶體操作。但要使外存操作的代價與記憶體操作的代價大致相當。

B樹能做到,而AVL與BBST卻做不到

  • 水平方向:對應與每個節點的內部搜尋,在記憶體(RAM)中進行。
  • 垂直方向:對應於磁碟(Disk)操作。樹中每下降一層,就要付出一次IO操作的代價。