B-樹 B+樹復習總結
一、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+樹復習總結