b+樹是為磁碟或其他直接訪問輔助裝置而設計的一種m叉平衡查詢樹,其特性如下:
每個節點m個關鍵字和m棵子樹,每個關鍵字對應乙個子樹。
除根節點外,其餘所有節點的關鍵字數在m/2(小數字進1)和m之間;根節點的關鍵字數在[1,m]之間。
所有的資料項,都是按照大小順序存放在同一層的葉子節點中,各葉子節點間用指標連線。
所有非葉子節點,起到索引作用,可以看成是索引。非葉子節點中的每個索引項只含有對應子樹的最大關鍵字和指向子樹的指標,不含有該關鍵字對應記錄的儲存位址。
以3叉b+樹為例,如圖:
root節點[3,5,8],包含了3個關鍵字和3個子樹,每個關鍵字對應乙個子樹。
見圖即可知root[3,5,8]節點個數為3,葉子節點[1,2,3],[4,5],[6,7,8]關鍵字個數分別為3,2,3。
葉子節點中,三個節點[1,2,3],[4,5],[6,7,8]有指標關聯,資料按照從小到大的順序排列,1,2,3,4,5,6,7,8。
如果該節點儲存是以數字id標識的使用者物件,在root節點中[3,5,8]資料儲存的是id關鍵字。在葉子節點,儲存的是包含數字id的使用者物件。
b+樹最大的好處在於,如下:
從root根節點開始查詢,在非葉子節點找到對應的關鍵字時,因為非葉子節點起到索引作用,沒有該關鍵字對應記錄的儲存位址,還需要到達該關鍵字的葉子節點才能獲取對應的全部資料。
如果需要從最小關鍵進行從小到大的順序查詢,可以直接從最左側的葉子節點開始,不經過根節點和其他非葉子節點,而沿著下乙個葉子節點指標可便利所有的資料。
在執行新增或者刪除操作時,有可能會破環b+樹特性。通常,通過節點**和節點領養兩種方式可以繼續保證b+樹特性。節點**會擴充套件節點的空間,乙個飽滿的節點**為兩個節點;節點領養會節省節點空間,使被領養的節點更加飽滿。具體操作可以參考b樹節點**和節點領養。
什麼是B樹?
b樹,是乙個m叉平衡查詢樹。如果m為2即為二叉查詢平衡樹,一般m都是大於2的。其特性如下 資料項儲存在樹的葉子節點。所有樹的葉子節點都在相同的深度上,並由l 2 小數字進1 和l之間個資料項。非葉節點儲存直到m 1個關鍵字以指示搜尋的方向 關鍵字i代表子樹i 1中的最小的關鍵字。樹的根或者一片樹葉節...
什麼是B 樹
什麼是b 樹呢?在說b 樹之前我們先了解一下為什麼要有b樹,其實這些樹最開始都是為了解決某種系統中,查詢效率低的問題。b樹其實最開始源於的是二叉樹,二叉樹是只有左右孩子的樹,當資料量越大的時候,二叉樹的節點越多,那麼當從根節點搜尋的時候,影響查詢效率。所以如果這些節點儲存在外儲存器中的話,每訪問乙個...
什麼是B 樹?
什麼是b 樹呢?b 樹全名 balance tree,讀做b樹 中間的 只是分隔作用,不要讀做b減樹哦 b樹首先它也是屬於樹結構,除了樹結構的節點有序 查詢高效外,還有以下特性。以乙個m階的b樹來舉栗 根節點至少包含兩個子節點 每個中間節點包括k 1個元素和k個子節點,其中m 2 k m 每乙個葉子...