資料結構之B樹和B 樹整理

2021-10-07 08:10:46 字數 1477 閱讀 3439

又稱多路平衡查詢樹,所有結點的最大孩子數稱為。一般用m來指代。

b樹的性質

對於m階的b樹:

每個結點最多有m棵子樹,自身最多有m-1個關鍵字

如果根結點不是終端結點,至少兩課子樹。

除根結點外的所有非葉結點至少有「向上取整m/2」棵子樹,那麼也就是至少有「向上取整m/2」-1個關鍵字。

所有葉節點都位於同一層,並且是不帶資訊的。

b樹的查詢

b樹的查詢可分為兩步

1.在b樹中找結點(磁碟上進行)

2.在結點內找關鍵字(記憶體上進行)

可採用順序查詢法或折半查詢法。

b樹的插入

通過b樹的查詢演算法確定查詢失敗的位置,這個位置就是應該插入的位置。

開始進行插入,如果要插入結點的關鍵字數量小於m,直接插入即可。如果大於等於m,那就不符合b樹的特性了,那就要進行**

**的方法是:位置為"向上取整m/2"的關鍵字,給到父節點,這個關鍵字的左部分保持在原來結點,右部分放到乙個新節點。

如果給到父節點關鍵字後,父節點的關鍵字數量也大於等於m了,那麼就要進行二次**。

b樹的刪除

刪除可分為兩種情況,被刪的關鍵字在與不在終端結點中。

不在終端結點中

如果要刪關鍵字k,找到k的前驅p,這個p一定是在終端結點中的,把k換成p,然後這時候就有兩個相同的p了,刪除掉終端結點中那個p即可。

在終端結點中

又分為三種情況

直接刪除。 當將要被刪除關鍵字所在結點的關鍵字數量大於等於「向上取整m/2」,代表刪掉之後就是「向上取整m/2」-1,依舊符合b樹特性,可以直接刪掉。

借兄弟一手。 顧名思義,為啥要借,就是自身不符合前面直接刪除的條件(刪掉之後不符合b樹特性了),所以要借兄弟的,那兄弟夠借嘛?所以又可以分為兩種

兄弟夠借的話:將父結點拿下來替換掉將要被刪除的那個,然後從右兄弟或者左兄弟拿走乙個放到父結點上,這叫做父子換位法。

兄弟不夠借,也就是說你拿了兄弟的,兄弟就不符合了。所以把關鍵字刪除後,將左兄弟或者右兄弟的結點與父結點中的關鍵字符合條件的那乙個進行合併。可以知道,在合併過程中,父節點關鍵字會少乙個,假如這個父節點是根節點,而且本來人家父節點只有乙個,你一合併,關鍵字數量變成0了,這時候需要處理一下:將根節點刪掉,合併後的新節點成為新根。

b+樹是專門為資料庫設計的。

b+樹的查詢、插入、刪除與b樹類似,但是b+樹查詢到關鍵字後,並不終止,而是繼續向下查詢,直到葉節點上的關鍵字為止。

b+樹葉結點是包含資訊的,而且關鍵字是「重複」的,也就是說葉節點包含所有的關鍵字,這也是為什麼b+樹查詢到關鍵字後,並不終止,而是繼續向下查詢,直到葉節點上的關鍵字為止。

b+樹n個關鍵字對應n棵樹,而在b樹種,n個關鍵字對應n+1棵樹。

資料結構之B樹 B 樹 B 樹 B 樹

b 樹b 樹 b b b 樹是為了磁碟或其它儲存裝置而設計的一種平衡多路查詢樹 相對於二叉,b樹每個內節點有多個分支 與紅黑樹相比,在相同的的節點的情況下,一顆b樹的高度遠遠小於紅黑樹的高度.b樹上操作的時間通常由訪問磁碟的時間和cpu計算時間這兩部分構成,而cpu的速度非常快,所以b樹的操作效率取...

資料結構之B 樹和B 樹

特意說明,本文只簡述b樹和b 樹的基本概念,並不涉及刪除,插入等操作 b樹中所有結點的孩子結點個數的最大值稱為b樹的階,通常用m表示,從查詢效率考慮,要求m 3。一顆m階的b樹應該滿足以下條件 每個結點最多有m個分支 而最少分支樹要看是否為根結點,如果是根結點且不是葉子結點,則至少有兩個分支,非根非...

資料結構之B 樹 B 樹

b樹的概念是為了解決一些現實問題而提出的,當資料量太大時,而記憶體中又無法儲存這麼多的資料,那麼就需要將資料儲存在磁碟上,如果繼續採用平衡樹的方法就會帶來一些問題,平衡樹每個節點都會分為兩個節點,那麼當資料太大的時候,樹的高度也會不斷增減,io操作的次數也隨之增加,所以需要降低樹的高度,所以才有了乙...