B樹插入刪除操作

2021-10-01 19:11:10 字數 1650 閱讀 8810

b-樹定義:

一種平衡的多路查詢樹。

用於:索引組織檔案,減少訪問外存次數,節約搜尋時間。

一棵m階b-樹或為空樹,或滿足下列特性:(為盡量簡單,把考試不考的內容全部略去)

1、樹中每個結點至多有m個分支,最少有[m/2]分支,取上整,除根結點外;

2.關鍵字數大於等於m/2-1,小於等於m-1,/2取上整

3、如果樹的結點數大於1,則根結點至少兩分支

例4階b-樹,來自zzh的ppt

(1)若該結點的關鍵字個數

(2)若該結點的關鍵字個數=m-1

此種情況m-1+1=m溢位,把出問題的那一分支的中間結點插入到父結點中,如果父結點也溢位,遞迴解決,顯然樹高可能因此增加一層,舉個例子最形象!

三種情況

(1)被刪關鍵字所在結點中的關鍵字個數》=[m/2],說明刪去該關鍵字後該結點仍滿足b-樹的定義。

直接刪去關鍵字即可。

(2)被刪關鍵字所在結點中關鍵字個數n=[m/2]-1,說明刪去該關鍵字後該結點將不滿足b-樹的定義,需要調整。

①如果其左(右)兄弟結點中有「多餘」的關鍵字,即與該結點相鄰的右(左)兄弟結點中的關鍵字數目大於[m/2]-1

則可將右(左)兄弟結點中最小(大)關鍵字上移至雙親結點。而將雙親結點中小(大)於該上移關鍵字的最大(小)關鍵字下

移至被刪 關鍵 字所在結點中。

有點像以兄弟結點為原點進行了一次左旋或右旋,父母中緊靠被刪關鍵字的下來,兄弟中緊靠被刪關鍵字的關鍵字上取

被刪關鍵字所在結點和其相鄰的左右兄弟節點中的關鍵碼個數均等於[m/2]-1,以常考的3階b-樹為例就是被刪結點和相鄰的左

右兄弟結點都只有乙個關鍵字,左右兄弟都不夠借

需把要刪除關鍵字的結點剩餘部分其左(或右)兄弟結點以及雙親結點中分割二者的關鍵字合併成乙個結點

如果因此使雙親結點中的關鍵字數目少於ceil(m/2)-1,則依次類推。

B樹(又稱B 樹)插入 刪除操作

b樹是一種平衡的多分樹,通常我們說m階的b樹,它必須滿足如下條件 1 每個結點至多有m個子結點 2 除根結點和葉結點外,其它每個結點至少有ceil m 2 個子結點 3 根結點至少有兩個子結點 唯一例外的是根結點就是葉子結點 4 所有的葉結點在同一層 5 有k個子結點的非根結點恰好包含k 1個關鍵碼...

B 樹的插入 刪除操作

include include define maxm 10 b 樹最大階數 typedef int keytype keytype是關鍵字型別 typedef struct node btnode typedef struct b 樹的查詢結果型別 result int m m階b 樹作為全域性變...

B樹 (插入操作)

一顆m階的b樹滿足一下特性 一 樹中的每個結點至多有m顆子樹,至少有顆子樹。除根結點和葉子結點外 其中表示m 2向上取整。二 樹中的每個結點至少有個關鍵字,至多m 1個關鍵字。當結點的關鍵字個數滿時,那麼該結點就需要 如何 假設 p結點已經有m 1個關鍵字,當再插入乙個關鍵字後,其關鍵字個數為m,超...