1. 程式人生 > >B樹、B-樹、B+樹、B*樹的特點 及其效能比較

B樹、B-樹、B+樹、B*樹的特點 及其效能比較

B樹、B-樹、B+樹、B*樹的特點:

  B樹:二叉樹,每個結點只儲存一個關鍵字,等於則命中,小於走左結點,大於走右結點;

       B-樹:多路搜尋樹,每個結點儲存M/2M個關鍵字,非葉子結點儲存指向關鍵字範圍的子結點;

所有關鍵字在整顆樹中出現,且只出現一次,非葉子結點可以命中;

       B+樹:在B-樹基礎上,為葉子結點增加連結串列指標,所有關鍵字都在葉子結點中出現,非葉子結點作為葉子結點的索引;B+樹總是到葉子結點才命中;

       B*樹:在B+樹基礎上,為非葉子結點也增加連結串列指標,將結點的最低利用率從1/2提高到2/3

效能比較:

效能相當,都等價於在關鍵字全集做一次二分查詢;

B-樹 改善了B樹的平衡問題, 

B+樹比 B-樹 更適合檔案索引系統(結構上的改善)

B*樹比B+樹改善了空間利用率。

紅黑樹和AVL樹的比較:

紅黑樹:

(1)並不追求“完全平衡”——它只要求部分地達到平衡要求,降低了對旋轉的要求,從而提高了效能。紅黑樹能夠以O(log2 n) 的時間複雜度進行搜尋、插入、刪除操作。

(2)此外,由於它的設計,任何不平衡都會在三次旋轉之內解決。紅黑樹能夠給我們一個比較“便宜”的解決方案。紅黑樹的演算法時間複雜度和AVL相同,但統計效能比AVL樹更高。

AVL樹:

(1)它的左子樹和右子樹都是AVL樹,左子樹和右子樹的高度差不能超過; 

(2) 

查詢、插入和刪除在平均和最壞情況下都是O(log n),增加和刪除可能需要通過一次或多次樹旋轉來重新平衡這個樹;

(3)一棵n個結點的AVL樹的其高度保持在0(log2(n)),不會超過3/2log2(n+1) 
一棵n個結點的AVL樹的平均搜尋長度保持在0(log2(n)). 
一棵n個結點的AVL樹刪除一個結點做平衡化旋轉所需要的時間為0(log2(n)).