演算法與資料結構學習(46) B樹 B 樹和B 樹

2021-10-04 11:34:22 字數 1109 閱讀 1287

b-tree樹即b樹,b即balanced,平衡的意思。有人把b-tree翻譯成b-樹,容易讓人產生誤解。會以為b-樹是一種樹,而b樹又是另一種樹。實際上,b-tree就是指的b樹。

前面已經介紹了2-3樹和2-3-4樹,他們就是b樹(英語:b-tree 也寫成b-樹),這裡我們再做乙個說明,我們在學習mysql時,經常聽到說某種型別的索引是基於b樹或者b+樹的,如圖:

b樹的說明:

b樹的階:節點的最多子節點個數。比如2-3樹的階是3,2-3-4樹的階是4

b-樹的搜尋,從根結點開始,對結點內的關鍵字(有序)序列進行二分查詢,如果命中則結束,否則進入查詢關鍵字所屬範圍的兒子結點;重複,直到所對應的兒子指標為空,或已經是葉子結點

關鍵字集合分布在整顆樹中, 即葉子節點和非葉子節點都存放資料.

搜尋有可能在非葉子結點結束

其搜尋效能等價於在關鍵字全集內做一次二分查詢

b+樹是b樹的變體,也是一種多路搜尋樹。

b+樹的說明:

b+樹的搜尋與b樹也基本相同,區別是b+樹只有達到葉子結點才命中(b樹可以在非葉子結點命中),其效能也等價於在關鍵字全集做一次二分查詢

所有關鍵字都出現在葉子結點的鍊錶中(即資料只能在葉子節點【也叫稠密索引】),且鍊錶中的關鍵字(資料)恰好是有序的。

不可能在非葉子結點命中

非葉子結點相當於是葉子結點的索引(稀疏索引),葉子結點相當於是儲存(關鍵字)資料的資料層

更適合檔案索引系統

b樹和b+樹各有自己的應用場景,不能說b+樹完全比b樹好,反之亦然.

b樹是b+樹的變體,在b+樹的非根和非葉子結點再增加指向兄弟的指標。

**b樹的說明:**

b*樹定義了非葉子結點關鍵字個數至少為(2/3)*m,即塊的最低使用率為2/3,而b+樹的塊的最低使用率為b+樹的1/2。

從第1個特點我們可以看出,b*樹分配新結點的概率比b+樹要低,空間使用率更高

資料結構 B樹與B 樹

b樹 多路平衡查詢樹 b 樹 由二叉查詢樹進化而來 m叉查詢樹 由分塊查詢進化而來 多級分塊查詢 根節點的關鍵字範圍 1,m 1 根節點的關鍵字範圍 2,m n個關鍵字對應n 1個分支 n個關鍵字對應n個分支 關於分支是一樣的 根節點分支數範圍 2,m 除根節點外,其他節點數範圍 m 2,m 所有節...

資料結構 四 B樹 B 樹 B 樹 B 樹

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

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

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