漫畫演算法:什麼是 B 樹?

玻璃貓發表於2017-07-09

伯樂線上補充:本文提到的「B-樹」,就是「B樹」,都是 B-tree 的翻譯,裡面不是減號-,是連線符-。因為有人把 B-tree 翻成 「B-樹」,讓人以為「B樹」和「B-樹」是兩種樹,實際上兩者就是同一種樹。

————————————

————————————

二叉查詢樹的結構:

第1次磁碟IO:

第2次磁碟IO:

第3次磁碟IO:

第4次磁碟IO:

下面來具體介紹一下B-樹(Balance Tree),一個m階的B樹具有如下幾個特徵:

1.根結點至少有兩個子女。

2.每個中間節點都包含k-1個元素和k個孩子,其中 m/2 <= k <= m

3.每一個葉子節點都包含k-1個元素,其中 m/2 <= k <= m

4.所有的葉子結點都位於同一層。

5.每個節點中的元素從小到大排列,節點當中k-1個元素正好是k個孩子包含的元素的值域分劃。

第1次磁碟IO:

在記憶體中定位(和9比較):

第2次磁碟IO:

在記憶體中定位(和2,6比較):

第3次磁碟IO:

在記憶體中定位(和3,5比較):

自頂向下查詢4的節點位置,發現4應當插入到節點元素3,5之間。

節點3,5已經是兩元素節點,無法再增加。父親節點 2, 6 也是兩元素節點,也無法再增加。根節點9是單元素節點,可以升級為兩元素節點。於是拆分節點3,5與節點2,6,讓根節點9升級為兩元素節點4,9。節點6獨立為根節點的第二個孩子。

自頂向下查詢元素11的節點位置。

刪除11後,節點12只有一個孩子,不符合B樹規範。因此找出12,13,15三個節點的中位數13,取代節點12,而節點12自身下移成為第一個孩子。(這個過程稱為左旋

 

 

喜歡本文的朋友們,歡迎長按下圖關注訂閱號程式設計師小灰,收看更多精彩內容

漫畫演算法:什麼是 B 樹?

打賞支援我寫出更多好文章,謝謝!

打賞作者

打賞支援我寫出更多好文章,謝謝!

漫畫演算法:什麼是 B 樹?

相關文章