B樹和B 樹以及常考應用

2021-09-29 12:40:25 字數 1764 閱讀 5689

1.b樹的特點

2.b樹的建立,插入,刪除操作

3.b+樹的特點

b樹,又稱多路平衡查詢樹,b樹中所有結點的孩子結點數的最大值稱為b樹的階,通常用m表示
一棵m階b樹 可以是空樹,也可以是滿足下列特點的m叉樹

1.樹中每個結點至多有m棵子樹(即至多含有m-1個關鍵字)

2.若根結點不是終端結點,則至少有2棵子樹

3.除根結點外的所有非葉結點至少有(m/2)(向上取整)棵子樹,即至少含有(m/2)(向上取整)個關鍵字

4.同乙個結點的關鍵字按從小到大排序

5.所有的葉結點都出現在同一層次上,並且不帶關鍵字資訊

若n>=1,則對任意一棵包含n個關鍵字,高度為h,階數為m的b樹
1. h>=logm(n+1);

2. n+1>=2(m/2)^(h-1) (m/2)向上取整

b樹的查詢包含兩個基本的操作

1.在b樹中找結點(在磁碟)

2.在結點內找關鍵字(在記憶體)

1.在二叉查詢樹中,僅需查詢到需要插入的終端結點的位置,然後直接插入即可

2.但是,在b樹中找到插入的位置後,並不能簡單地將其新增到終端結點中,

因為此時可能會導致整棵樹不再滿足b樹定義中的要求(比如m叉b樹每個結點不能查過m個結點)

3.將關鍵字key插入到b樹的過程如下:

a.定位//首先找到該關鍵字的最低層中的某個非葉結點(注意 b樹中的關鍵字插入一定插入在最低層的某個非葉結點內)

b.插入//若插入後的結點關鍵字個數小於m,可以直接插入;若插入後結點的關鍵字個數大於m-1時,必須對結點進行**

取乙個新結點,在插入key後的原結點,從中間位置將其中的關鍵字分為兩部分,左部分包含的關鍵字放在原結點中,

右部分包含的關鍵字放到新結點中,中間位置(m/2)向上取整 的結點插入原結點的父結點。

若此時導致父結點的關鍵字個數也超過了上限,則繼續進行這種操作,直至這個過程傳到根結點為止,

進而導致b樹高度增加1

1.當所刪除的關鍵字k在終端結點(最低層非葉結點)中時,

a.若被刪除關鍵字所在結點的關鍵字個數大於(m/2)-1 m/2向上取整 直接刪除

b.兄弟夠借則借

c.兄弟不夠借則合併

2.當所刪除的關鍵字k不在終端結點(最低層非葉結點)中時

a.若小於k的子樹中關鍵字個數大於(m/2)-1 m/2向上取整,則用k的前驅來代替k,再刪除k

b.若大於k的子樹中關鍵字個數大於(m/2)-1 m/2向上取整,則用k的後繼來代替k,再刪除k

c.若前後兩個子樹的關鍵字均為(m/2)-1 m/2向上取整,則直接將兩個子結點合併,再刪除k

一棵m階的b+樹需滿足下列條件:

1.每個分支結點最多有m棵子樹(子結點)

2.非葉根結點至少有兩棵子樹,其他每個分支結點至少有(m/2) m/2向上取整 棵子樹

3.結點的子樹個數與關鍵字個數相等

4.所有葉結點包含全部關鍵字及指向相應記錄的指標,葉結點中將關鍵字按大小順序排序,

並且相鄰葉結點按大小順序相互鏈結起來

5.所有分支結點(可視為索引的索引)中僅包含它的各個子結點(即下一級的索引塊)

中關鍵字的最大值及指向其子結點的指標

B 樹以及B 樹和B 樹

b樹說白了就是乙個結點有多個子結點。本文介紹的資料結構英文是b tree,中文寫作b 樹,其中 並不是減號,而是連線符,讀作b樹。b 樹是一種平衡搜尋樹,但它的每個結點包含的元素可以多於2個,因此並不是嚴格意義上的二叉樹。相比與二叉樹,b樹顯得更矮,更胖。它的每個結點包含多個資料,這特別適合於對外存...

B 樹以及B 樹

b樹是一種平衡的多路查詢樹,包括b 樹以及b 樹。乙個節點可以擁有多個key以及多個孩子節點。一棵d 1階 又稱為branch factor 的b樹滿足如下條件 b 樹的每個節點均儲存key以及相應的value。b 樹還具有如下特點 b 樹中的旋轉操作不同於自平衡二叉搜尋樹,並不改變樹的結構,僅僅更...

B樹B 樹B 樹和B 樹

原文link b樹 即二叉搜尋樹 1.所有非葉子結點至多擁有兩個兒子 left和right 2.所有結點儲存乙個關鍵字 3.非葉子結點的左指標指向小於其關鍵字的子樹,右指標指向大於其關鍵字的子樹 如 b樹的搜尋,從根結點開始,如果查詢的關鍵字與結點的關鍵字相等,那麼就命中 否則,如果查詢關鍵字比結點...