b樹,是乙個m叉平衡查詢樹。如果m為2即為二叉查詢平衡樹,一般m都是大於2的。其特性如下:
資料項儲存在樹的葉子節點。
所有樹的葉子節點都在相同的深度上,並由l/2(小數字進1)和l之間個資料項。
非葉節點儲存直到m-1個關鍵字以指示搜尋的方向;關鍵字i代表子樹i+1中的最小的關鍵字。
樹的根或者一片樹葉節點,其兒子節點數在2和m之間。
除根外和葉子節點外,其餘所有節點的兒子數在m/2(小數字進1)和m之間。
以5叉b樹為例,如圖:
特性1和2:所有的資料節點都在第3層的葉子節點。變數l由物理儲存大小和儲存的資料大小獲得,該樹的l為5,每個葉子節點儲存的資料項個數為3到5個。
特性3:非葉子節點在該樹中,最多最多4個關鍵字,儲存資料項以公升序的方式排序。以第2層的非葉子節點為例,第1個關鍵字8,在第3層子樹2個節點中最小的資料8;第2個關鍵字18,在第3層子樹3個節點中最小的資料18。
特點4和特點5:顯而易見觀察其分支則可知。
b樹資料結構最大的優點就是,降低了樹的高度,在執行查詢時,減少了查詢次數,提高了查詢效率。在執行新增或者刪除操作時,有可能會破環b樹特性。通常,通過節點**和節點領養兩種方式可以繼續保證b樹特性。節點**會擴充套件節點的空間,乙個飽滿的節點**為兩個節點;節點領養會節省節點空間,使被領養的節點更加飽滿。
同層節點**
在上述圖-1的b樹中,新增55時,會新增到節點[54,56,57,58,59],此時,儲存資料項個數為6(l+1),大於葉子節點規定的個數。需要把該節點**為兩個節點,並且修改父節點的資訊,總共執行3次操作。操作完成後的b樹如圖:
同層級和父級節點**
在上述圖-2的b樹中,新增40時,會新增到節點[35,36,37,38,39],同層節點**後,修改父級節點[8,18,26,35],新增關鍵字40。此時,父級也需要節點**,總共執行了5次操作。操作完成後的b樹如圖:
在上述的b樹中,從節點[97,98,99]刪除99,此時,該節點的資料項為2,不滿足b樹特性,此時臨近節點[92,93,95]可以領養97,98資料項。結果,它的父節點的兒子數只有2,不滿足b樹的特性,其父節點的左節點有四個兒子,需要領養乙個使得雙方都有3個兒子節點。總共執行了4次操作。操作完成後的b樹如圖:
什麼是B 樹?
b 樹是為磁碟或其他直接訪問輔助裝置而設計的一種m叉平衡查詢樹,其特性如下 每個節點m個關鍵字和m棵子樹,每個關鍵字對應乙個子樹。除根節點外,其餘所有節點的關鍵字數在m 2 小數字進1 和m之間 根節點的關鍵字數在 1,m 之間。所有的資料項,都是按照大小順序存放在同一層的葉子節點中,各葉子節點間用...
什麼是B 樹
什麼是b 樹呢?在說b 樹之前我們先了解一下為什麼要有b樹,其實這些樹最開始都是為了解決某種系統中,查詢效率低的問題。b樹其實最開始源於的是二叉樹,二叉樹是只有左右孩子的樹,當資料量越大的時候,二叉樹的節點越多,那麼當從根節點搜尋的時候,影響查詢效率。所以如果這些節點儲存在外儲存器中的話,每訪問乙個...
什麼是B 樹?
什麼是b 樹呢?b 樹全名 balance tree,讀做b樹 中間的 只是分隔作用,不要讀做b減樹哦 b樹首先它也是屬於樹結構,除了樹結構的節點有序 查詢高效外,還有以下特性。以乙個m階的b樹來舉栗 根節點至少包含兩個子節點 每個中間節點包括k 1個元素和k個子節點,其中m 2 k m 每乙個葉子...