數據結構(六)查找---多路查找樹(B樹)


B 樹

B樹與B+樹

一:定義

B樹(B-樹)是一種平衡的多路查找樹。2-3樹和2-3-4樹都是B樹的特例。節點最大的孩子數組稱為B樹的階(order),因此,2-3樹是3階B樹,2-3-4樹是4階B樹。 

二:屬性

一棵最小度為t的B樹是滿足如下四個條件的平衡多叉樹:

1.每個節點最多包含2t−1個關鍵字;除根節點外的每個節點至少有t−1個關鍵字(t≤2),根節點至少有一個關鍵字;

2.一個節點u中的關鍵字按非降序排列:u.key1≤u.key2≤…u.keynu.key1≤u.key2≤…u.keyn;

3.每個節點的關鍵字對其子樹的范圍分割。設節點uu有n+1個指針,指向其n+1棵子樹,指針為u.p1,…u.pn,關鍵字ki為u.pi所指的子樹中的關鍵字,有k1≤u.key1≤k2≤u.key2…k1≤u.key1≤k2≤u.key2…成立;

4.所有葉子節點處於同一層次。這表明B樹是平衡的。平衡性其實正是B樹名字的來源,B表示的正是單詞Balanced;

比如說要查找7,首先從外存讀取得到根節點3,5,8三個元素,發現7不在,但是5、8之間,因此就通過A2再讀取外存的6,7節點找到結束。

B樹的插入和刪除和2-3樹、2-3-4樹類似。

三:用途

B樹的數據結構為內外存的數據交互准備的

當要處理的數據很大時,無法一次全部裝入內存。
這時對B樹調整,使得B樹的階數與硬盤存儲的頁面大小相匹配。
比如說一棵B樹的階為1001(即1個節點包含1000個關鍵字),高度為2(從0開始),它可以存儲超過10億個關鍵字(1001x1001x1000+1001x1000+1000),
只要讓根節點持久的保留在內存中,那么在這顆樹上,尋找某一個關鍵字至多需要兩次硬盤的讀取即可。

四:性能

對於n個關鍵字的m階B樹,最壞情況查找次數計算 

第一層至少1個節點,第二層至少2個節點,由於除根節點外每個分支節點至少有⌈m/2⌉棵子樹,則第三層至少有2x⌈m/2⌉個節點...
這樣第k+1層至少有2x(⌈m/2⌉)^(k-1),實際上,k+1層的節點就是葉子節點。
若m階B樹有n個關鍵字,那么當你找到葉子節點,其實也就等於查找不成功的節點為n+1
因此n
+1>=2x(⌈m/2⌉)^(k-1),即

在含有n個關鍵字的B樹上查找時,從根節點到關鍵字節點的路徑上涉及的節點數不超多

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM