漫畫算法:什麼是 B 樹?

伯樂在線補充:本文提到的「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自身下移成爲第一個孩子。(這個過程稱爲左旋

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章