B樹和B 樹詳解

2021-10-07 21:38:53 字數 1180 閱讀 4697

在介紹b+樹之前, 先簡單的介紹一下b樹,這兩種資料結構既有相似之處,也有他們的區別,最後,我們也會對比一下這兩種資料結構的區別。

b樹也稱b-樹,它是一顆多路平衡查詢樹。二叉樹我想大家都不陌生,其實,b樹和後面講到的b+樹也是從最簡單的二叉樹變換而來的,並沒有什麼神秘的地方,下面我們來看看b樹的定義。

所以,根節點的關鍵字數量範圍:1 <= k <= m-1,非根節點的關鍵字數量範圍:m/2 <= k <= m-1。

另外,我們需要注意乙個概念,描述一顆b樹時需要指定它的階數,階數表示了乙個節點最多有多少個孩子節點,一般用字母m表示階數。

我們再舉個例子來說明一下上面的概念,比如這裡有乙個5階的b樹,根節點數量範圍:1 <= k <= 4,非根節點數量範圍:2 <= k <= 4。

下面,我們通過乙個插入的例子,講解一下b樹的插入過程,接著,再講解一下刪除關鍵字的過程。

插入的時候,我們需要記住乙個規則:判斷當前結點key的個數是否小於等於m-1,如果滿足,直接插入即可,如果不滿足,將節點的中間的key將這個節點分為左右兩部分,中間的節點放到父節點中即可

例子:在5階b樹中,結點最多有4個key,最少有2個key(注意:下面的節點統一用乙個節點表示key和value)。

b樹的刪除操作相對於插入操作是相對複雜一些的,但是,你知道記住幾種情況,一樣可以很輕鬆的掌握的。

上面的這些介紹,相信對於b樹已經有一定的了解了,接下來的一部分,我們接著講解b+樹,我相信加上b+樹的對比,就更加清晰明了了。

b+樹其實和b樹是非常相似的,我們首先看看相同點

對於插入操作很簡單,只需要記住乙個技巧即可:當節點元素數量大於m-1的時候,按中間元素**成左右兩部分,中間元素**到父節點當做索引儲存,但是,本身中間元素還是**右邊這一部分的。

下面以一顆5階b+樹的插入過程為例,5階b+樹的節點最少2個元素,最多4個元素。

對於刪除操作是比b樹簡單一些的,因為葉子節點有指標的存在,向兄弟節點借元素時,不需要通過父節點了,而是可以直接通過兄弟節移動即可(前提是兄弟節點的元素大於m/2),然後更新父節點的索引;如果兄弟節點的元素不大於m/2(兄弟節點也沒有多餘的元素),則將當前節點和兄弟節點合併,並且刪除父節點中的key,下面我們看看具體的例項。

b+樹相對於b樹有一些自己的優勢,可以歸結為下面幾點。

詳解B樹 B 樹 B 樹 B 樹

b樹 即二叉搜尋樹 1.所有非葉子結點至多擁有兩個兒子 left和right 2.所有結點儲存乙個關鍵字 3.非葉子結點的左指標指向小於其關鍵字的子樹,右指標指向大於其關鍵字的子樹 如 b樹的搜尋,從根結點開始,如果查詢的關鍵字與結點的關鍵字相等,那麼就命中 否則,如果查詢關鍵字比結點關鍵字小,就進...

B樹 B 樹 B 樹 B 樹詳解

b樹 即二叉搜尋樹 1.所有非葉子結點至多擁有兩個兒子 left和right 2.所有結點儲存乙個關鍵字 3.非葉子結點的左指標指向小於其關鍵字的子樹,右指標指向大於其關鍵字的子樹 如 b樹的搜尋,從根結點開始,如果查詢的關鍵字與結點的關鍵字相等,那麼就命中 否則,如果查詢關鍵字比結點關鍵字小,就進...

B樹 B 樹 B 樹 B 樹詳解

b樹 即二叉搜尋樹 1.所有非葉子結點至多擁有兩個兒子 left和right 2.所有結點儲存乙個關鍵字 3.非葉子結點的左指標指向小於其關鍵字的子樹,右指標指向大於其關鍵字的子樹 如 b樹的搜尋,從根結點開始,如果查詢的關鍵字與結點的關鍵字相等,那麼就命中 否則,如果查詢關鍵字比結點關鍵字小,就進...