2023年,r.bayer和e.mccreight提出了一種適用於外查詢的樹,
它是一種平衡的多叉樹,稱為b樹(或b-樹、b_樹)。
一棵m階b樹(balanced tree of order m)是一棵平衡的m路搜尋樹。它或者是空樹,或者是滿足下列性質的樹:
1、根結點至少有兩個子女;
2、每個節點最多有m顆子樹
3、若根結點不是終端結點,則至少有兩顆子樹
4、除了根結點之外的非終端節點至少有 ⌈m
/2⌉ ⌈m/
2⌉個子樹所有的非終端節點都包含以下資料(n,p0,k1,p1,k2,p2,…,kn,pn)
n為關鍵碼的個數
p 為指向孩子節點的指標 並且 遵循 假設 k1 < ,p1, < k2,
k為 關鍵碼.
如圖:
b樹是2-3樹的推廣 2-3樹是乙個三階b樹
b樹 通常用在檔案系統中
主要是查詢 刪除 插入
這個類似2-3樹的 查詢 例如我們在上述的圖中查詢53 首先根結點 查詢,和35比 大於35 去右子樹查詢,然後和大於43小於78 進入43 與78中間的子樹查詢,然後在子節點順序比較關鍵碼,最終找到53,如果沒有 則查詢失敗
2.2 插入
能插就插
插不進去硬插
2.3 刪除
如果要刪除的結點的關鍵碼的個數大於 m/2 則直接刪除
如果關鍵碼的個數不大於 m/2 後,那麼如果兄弟有 那麼就向兄弟借,這個過程 要改變雙親結點
如果兄弟節點不夠呢?那麼就合併,就是把要出這個節點合併到他的兄弟節點中,然後刪除這個空節點,這時候雙親結點少了乙個子節點,怎麼辦呢?雙親結點關鍵碼下移到我們合併後的結點中,如果雙親結點沒有下溢,就是說沒有少於m/2個,那麼演算法結束
否則 雙親結點也要進行上述操作
資料結構之B 樹 B 樹
b樹的概念是為了解決一些現實問題而提出的,當資料量太大時,而記憶體中又無法儲存這麼多的資料,那麼就需要將資料儲存在磁碟上,如果繼續採用平衡樹的方法就會帶來一些問題,平衡樹每個節點都會分為兩個節點,那麼當資料太大的時候,樹的高度也會不斷增減,io操作的次數也隨之增加,所以需要降低樹的高度,所以才有了乙...
資料結構之B樹 B 樹 B 樹 B 樹
b 樹b 樹 b b b 樹是為了磁碟或其它儲存裝置而設計的一種平衡多路查詢樹 相對於二叉,b樹每個內節點有多個分支 與紅黑樹相比,在相同的的節點的情況下,一顆b樹的高度遠遠小於紅黑樹的高度.b樹上操作的時間通常由訪問磁碟的時間和cpu計算時間這兩部分構成,而cpu的速度非常快,所以b樹的操作效率取...
資料結構之 B樹
b樹 b tree 是一種自平衡的樹,能夠保持資料有序。是一種專用的 m 階樹,最多有 m 個節點的自平衡樹,與自平衡二叉查詢樹不同,b樹 為系統大塊資料的讀寫操作做了優化。b樹 減少定位記錄時所經歷的中間過程,從而加快訪問速度。這種資料結構常被應用在資料庫和檔案系統的實現上。這種資料結構能夠讓查詢...