1. 程式人生 > >B-樹 B+樹復習總結

B-樹 B+樹復習總結

插入 復習 父節點 指針 關鍵字 刪除 樹的定義 三次 strong

一、B-樹的定義

一棵m階的B-樹或為空樹,或為具有以下特性的m叉樹

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

2、根結點至少有兩棵子樹 (至少有一個關鍵字)

3、除根節點的分支結點至少有floor(m/2)棵子樹 (floor(m/2)個關鍵字)

4、所有的非終端結點至多有 m-1個關鍵字

二、B-樹的查找 查找k

B-樹的查找與二叉有序樹的查找類似

先在根結點查找關鍵字k,若找到則ok,若只有ki<k<k(i=1),則沿著pi的分支往下查找子樹

根據B-樹的定義:

第一層至少有1個結點,第二層至少2個結點,第三次 2*floor(m/2),第四層 2*floor(m/2)*floor(m/2)

類比第h+1層至少有2*(floor(m/2))^h-1。而第i+1層的結點為葉子結點。若m階B-樹具有N個關鍵字,

那麽葉子結點即查找不成功的結點為N+1

N+1>=2*(floor(m/2))^h-1 ------> h=log floor(m/2) [ (N+1)/2] +1

三、B-樹的插入

當某個節點的關鍵字的個數小於 m-1時,則直接插入該節點

當該節點的關鍵字等於m-1時,插入k時,需要將該結點 以中間關鍵字為界限將結點一分為2,並把中間關鍵字插入到父節點中

四、B-樹的刪除

m階B-樹的刪除操作是在B-樹的某個結點中刪除指定的關鍵字和鄰近的一個指針,,刪除後對B-樹進行調整,使其繼續滿足B-樹的定義

根據定義,B-樹中除根結點的分支結點中的關鍵字的個數為[ floor(m/2),m-1] ,若刪除關鍵字後,關鍵字的個數仍滿足上述條件,則直接刪除,若否,則需要調整

當刪除該關鍵字後,可以以其左(右)分支最大(小)的關鍵代替刪除關鍵字的位置,然後刪除該關鍵字,故刪除任何一個結點都可以轉化為刪除最下層的某個關鍵字

B-樹 B+樹復習總結