B 樹以及B 樹和B 樹

2021-07-30 08:57:10 字數 1215 閱讀 1228

b樹說白了就是乙個結點有多個子結點。

本文介紹的資料結構英文是b-tree,中文寫作b-樹,其中 – 並不是減號,而是連線符,讀作b樹。

b-樹是一種平衡搜尋樹,但它的每個結點包含的元素可以多於2個,因此並不是嚴格意義上的二叉樹。

相比與二叉樹,b樹顯得更矮,更胖。它的每個結點包含多個資料,這特別適合於對外存的訪問。由於硬碟等裝置訪問速度和記憶體相比非常慢,而從硬碟讀取1個資料和讀取10個資料用時幾乎一樣,這非常適合使用b-樹這種結構。每個結點資料很多,就可以從磁碟依次取出大量資料,矮的特點可以減少磁碟的io次數。

b樹與紅黑樹最大的不同在於,b樹的結點可以有許多子女,從幾個到幾千個。那為什麼又說b樹與紅黑樹很相似呢?因為與紅黑樹一樣,一棵含n個結點的b樹的高度也為o(lgn),但可能比一棵紅黑樹的高度小許多,應為它的分支因子比較大。所以,b樹可以在o(logn)時間內,實現各種如插入(insert),刪除(delete)等動態集合操作。

定義:m階b樹的定義

b-樹的所有葉子結點都位於同一深度,同時對每個結點的分支數也有限制。乙個m階b-樹滿足

每個結點的分支數最多m個,因此每個結點元素個數最多m-1個。

除根節點外,每個結點的分支樹最少 ⌈m/2⌉ 個(向上取整)。根節點例外,根節點可以只有2個分支。

這樣,m階b-樹也可以叫做 (⌈m/2⌉ , m) -樹 。

定義:以最小度為定義b樹

我們可以為每棵b樹規定乙個最小度數(樹的孩子結點數):t(最大度數為2t),那麼每個結點所包含的關鍵字個數的範圍:t-1 ~2t-1, 所包含的孩子結點個數為t ~ 2t。當結點關鍵字個數為2t - 1時,該結點滿。(根結點至少包含1個關鍵數,而其他結點至少包含t - 1個關鍵字。

以最小度來求:(注意下面的h是從0計算的,假設h最大可取到3,也就是0,1,2,3相當於4層)

h<=logt((n+1)/2)

t: 最小的度

n:總的關鍵字個數

h:深度範圍

以階數來求:

曾在一次面試中被問到,一棵含有n個總關鍵字數的m階的b樹的最大高度是多少?答曰:log_ceil(m/2)(n+1)/2 + 1 (上面中關於m階b樹的第1點特性已經提到:樹中每個結點含有最多含有m個孩子,即m滿足:ceil(m/2)<=m<=m。

注意:這裡求得高度是以1位開始的,即(1,2,3,4…)

參照:(未完待續)

B樹B 樹B 樹和B 樹

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

B 樹 B 樹 B 樹和B 樹

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

B 樹以及B 樹

b樹是一種平衡的多路查詢樹,包括b 樹以及b 樹。乙個節點可以擁有多個key以及多個孩子節點。一棵d 1階 又稱為branch factor 的b樹滿足如下條件 b 樹的每個節點均儲存key以及相應的value。b 樹還具有如下特點 b 樹中的旋轉操作不同於自平衡二叉搜尋樹,並不改變樹的結構,僅僅更...