資料結構 B 樹

2021-08-31 12:28:38 字數 2105 閱讀 2812

便於理解,引入多個定義,從多個角度討論。

b-樹的定義1:

一棵m(m≥3)階的b-樹是滿足如下性質的m叉樹:

(1)

每個結點至少包含下列資料域:

(j,p 0 ,k l ,p 1 ,k 2 ,…,k i ,p i )

其中:j為關鍵字總數,

k i (1≤i≤j)是關鍵字,關鍵字序列遞增有序:k 1

p i (0≤i≤j)是孩子指標。對於葉結點,每個p i 為空指標。

注意:

①實用中為節省空間,葉結點中可省去指標域p i ,但必須在每個結點中增加乙個標誌域leaf,其值為真時表示葉結點,否則為內部結點。

②在每個內部結點中,假設用keys(pi)來表示子樹pi中的所有關鍵字,

則有:keys(p 0 )

即關鍵字是分界點,任一關鍵字ki左邊子樹中的所有關鍵字均小於k i ,右邊子樹中的所有關鍵字均大於k i 。

(2)所有葉子是在同一層上,葉子的層數為樹的高度h

(3)每個非根結點中所包含的關鍵字個數j滿足:若樹非空,則根至少有1個關鍵字,故若根不是葉子,則它至少有2棵子樹。根至多有m-1個關鍵字,故至多有m棵子樹。

b-樹的定義2

b-樹是一種平衡的多路查詢樹(與二叉查詢樹,平衡二叉樹相對應而言),它有較高的查詢的效率,在檔案系統中很有用.主要用於檔案索引

一、b-樹的定義

一棵"m 階的b樹"或為空樹,或為具有以下特性的m 叉查詢樹:

以下(1),(2)是保證其為平衡樹的特性

(1)樹中每個結點至多有m 棵子樹;

(2)除根以外的所有非葉結點至少有[m/2 ](向上取整)棵子樹,根結點若是非葉結點,則至少有兩棵子樹;

補充;對於每個非葉節點,它有n個索引項/關鍵字,有n+1個指向子樹根結點的指標;

以下(3),(4)是保證其為查詢樹的特性

(3)所有的非葉結點中含有如下資訊:

(n,a0,(k1,d1),a1,(k2,d2),……

, an-1,(kn,dn),an)

(ki,di)(i=1,…,n)為索引項,ki為索引項的關鍵碼,di為指向索引項內容(或記錄)的指標。

ki,n-1);

ai(i=0,…,n) 為指向子樹根結點的指標。

ai-1 所指子樹中所有索引項的關鍵碼小於ki(i=1,…,n),an 所指子樹中索引項的關鍵碼大於kn,n(m/2-1≤n≤m-1) 為結點中索引項的個數。

(4)所有葉結點都在同一層上,且不含任何資訊。

下圖為一棵3階b-樹:

相比定義一,定義二更加具體。

b-樹的特性

假如m為設定的非葉子結點最多子樹個數,n為關鍵字總數;

由於限制了除根結點以外的非葉子結點,至少含有m/2個兒子,確保了結點的至少利用率,確保它為平衡查詢樹,所以b-樹的搜尋效能總是等價於二分查詢(與m值無關),也就沒有b 樹平衡的問題, 時間複雜度: o(log m/2 n);

1.關鍵字集合分布在整顆樹中;

2.任何乙個關鍵字出現且只出現在乙個結點中;

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

4.由於m/2的限制,插入和刪除節點後能保證b樹的平衡,且非葉的非根結點一般會有指向父節點的指標,使得插入和刪除更加便利。在插入結點時,如果結點已滿,需要將結點**為兩個各佔m/2的結點;刪除結點時,需將兩個不足m/2的兄弟結點合。

資料結構 B樹,B 樹

注意b 樹就是b樹,只是乙個符號.簡介b b 樹是為了磁碟或其它儲存裝置而設計的一種平衡多路查詢樹 相對於二叉,b樹每個內節點有多個分支 與紅黑樹相比,在相同的的節點的情況下,一顆b b 樹的高度遠遠小於紅黑樹的高度 在下面b b 樹的效能分析中會提到 b b 樹上操作的時間通常由訪問磁碟的時間和c...

資料結構 B樹 B 樹

b樹 b樹即 balance tree 也就是平衡樹,它是在搜尋樹的基礎上,維持每乙個節點的左右子樹高度之差不超過1的結構,使得搜尋的平均時間複雜度為o log n 級別。二叉搜尋樹 對於任何乙個節點n,其左邊子樹的所有節點值小於n 其右邊子樹的所有節點的值大於n 給點乙個查詢值,從根節點值開始,一...

資料結構 B樹 B 樹

經典資料結構 b樹與b 樹的解釋 追求極致 磁碟中有兩個機械運動的部分,分別是碟片旋轉和磁臂移動。碟片旋轉就是多少轉每分鐘,而磁碟移動則是在碟片旋轉到指定位置以後,移動磁臂後開始進行資料的讀寫。因為是機械移動,所以盡量減少io,節省開銷 利用平衡樹的優勢加快查詢的穩定性和速度 b樹其分支結點和葉子節...