B樹、B-樹、B+樹、B*樹的特點 及其效能比較
B樹、B-樹、B+樹、B*樹的特點:
B樹:二叉樹,每個結點只儲存一個關鍵字,等於則命中,小於走左結點,大於走右結點;
B-樹:多路搜尋樹,每個結點儲存M/2到M個關鍵字,非葉子結點儲存指向關鍵字範圍的子結點;
所有關鍵字在整顆樹中出現,且只出現一次,非葉子結點可以命中;
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)).