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] ,若刪除關鍵字后,關鍵字的個數仍滿足上述條件,則直接刪除,若否,則需要調整
? ? ?? 當刪除該關鍵字后,可以以其左(右)分支最大(小)的關鍵代替刪除關鍵字的位置,然后刪除該關鍵字,故刪除任何一個結點都可以轉化為刪除最下層的某個關鍵字
? ? ?
?
轉載于:https://www.cnblogs.com/houchen/p/9278910.html
總結
以上是生活随笔為你收集整理的B-树 B+树复习总结的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: SQL性能优化-查询条件与字段分开执行,
- 下一篇: IntelliJ IDEA 运行 Mav