1. 程式人生 > >資料結構學習筆記(18)---B樹

資料結構學習筆記(18)---B樹

(1)什麼是B樹,其實有一個另外的名字叫B-樹,所以網上說的B-樹其實就是B樹。

B樹的定義:
(1) 首先B樹是一棵平衡的m路查詢樹,樹中每個節點的最多有m個子樹。
(2) 根節點最少有兩個子樹。
(3) 除根節點以外的非葉子結點最少有[m/2]個子樹。
(4) 所有葉節點出現在同一層上,並且不含資訊,通常稱為失敗節點,目的是便於分析B樹的查詢。
好了,滿足上述條件就是一個標準的B樹了,例如:下列就是一顆M=3的三階B樹。

這裡寫圖片描述

(2)B樹的節點插入。

  • 如果該結點的關鍵字個數沒有到達m-1個,那麼直接插入即可;
  • 如果該結點的關鍵字個數已經到達了m-1個,那麼根據B樹的性質顯然無法滿足,需要將其進行分裂。
    • 分裂的規則是該結點分成兩半,將中間的關鍵字進行提升,加入到父親結點中
    • 但是這又可能存在父親結點也滿員的情況,則不得不向上進行回溯,甚至是要對根結點進行分裂,那麼整棵樹都加了一層。
      例如:
      這裡寫圖片描述
      這裡寫圖片描述
      這裡寫圖片描述
      這裡寫圖片描述

(3)B樹的節點刪除

  • 首先檢視要刪除的節點是刪除後是否滿足B樹的定義,如果滿足則可以直接刪除。
  • 如果不滿足,則需要做下列調整。
    • 如果要刪除節點後,該分支沒有節點,則需要把該分支左(右)兄弟的中的元素拿到父節點中,將父節點中的分支放到原先刪除的分支中去。即“父子交換法”。
    • 如果上述中左右兄弟只有也只有一個關鍵字,這時需要合併根節點
  • 上述刪除的是最後一層關鍵詞時候的情況,如果是在非最下層刪除節點,則需要從其下一層進行上移。
例如:

這裡寫圖片描述
這裡寫圖片描述


這裡寫圖片描述

(3)B樹的應用,最重要的應用是檔案檢索,其結構可以對於每一層的檔案進行查詢,且速度很快。