便於理解,引入多個定義,從多個角度討論。
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樹其分支結點和葉子節...