淺談B樹

Dus發表於2015-11-02

B樹即二叉搜尋樹:

1.所有非葉子結點至多擁有兩個兒子(Left和Right);

2.所有結點儲存一個關鍵字;

3.非葉子結點的左指標指向小於其關鍵字的子樹,右指標指向大於其關鍵字的子樹;
如:
淺談B樹

       B樹的搜尋,從根結點開始,如果查詢的關鍵字與結點的關鍵字相等,那麼就命中;否則,如果查詢關鍵字比結點關鍵字小,就進入左兒子;如果比結點關鍵字大,就進入右兒子;如果左兒子或右兒子的指標為空,則報告找不到相應的關鍵字;如果B樹的所有非葉子結點的左右子樹的結點數目均保持差不多(平衡),那麼B樹的搜尋效能逼近二分查詢;但它比連續記憶體空間的二分查詢的優點是,改變B樹結構(插入與刪除結點)不需要移動大段的記憶體資料,甚至通常是常數開銷;
如:
淺談B樹

但B樹在經過多次插入與刪除後,有可能導致不同的結構:
淺談B樹

       右邊也是一個B樹,但它的搜尋效能已經是線性的了;同樣的關鍵字集合有可能導致不同的樹結構索引;所以,使用B樹還要考慮儘可能讓B樹保持左圖的結構,和避免右圖的結構,也就是所謂的“平衡”問題;
       實際使用的B樹都是在原B樹的基礎上加上平衡演算法,即“平衡二叉樹”;如何保持B樹結點分佈均勻的平衡演算法是平衡二叉樹的關鍵;平衡演算法是一種在B樹中插入和刪除結點的策略;

相關文章