把B樹、B+樹、紅黑樹說透

1.二叉排序樹

二叉排序樹是一個空樹,或者是具有如下性質的二叉樹:

  1. 若它的左子樹不爲空,則左子樹上的所有節點的值均小於它的根節點的值;
  2. 若它的右子樹不爲空,則右子樹上的所有節點的值均大於它的根節點的值;
  3. 左右子樹都是二叉排序樹。

二叉排序樹的數據操作效率:
1.查找效率最好爲O(log n)、最壞爲O(n);
2.插入效率和查找效率相同(先查找插入的位置,且只插入到葉子節點);
3.刪除效率最好爲O(log n) + O(1)(只有左或者右子樹),最壞爲O(log n) + O(log n)(只有左右子樹同時存在)

2.平衡二叉樹

平衡二叉樹是空樹或者左右兩個子樹的高度差的絕對值不超過1,並且左右兩個子樹都是平衡二叉樹。
平衡二叉樹犧牲了插入和刪除數據的代價,但是提高了查詢效率(穩定查詢效率爲O(log n))。

3.紅黑樹

紅黑樹是一種自平衡二叉排序樹,特徵如下:
1.節點是紅色或者是黑色;
2.根節點是黑色;
3.所有葉子節點都是黑色(葉子節點的值都是NULL);
4.每個紅色節點的兩個子節點都是黑色(即從根到葉子遍歷不能出現兩個連續的紅節點);
5.從任意一個節點到每個葉子節點的所有簡單路徑都包含相同數據的黑色節點。
紅黑樹解決的問題,它可以在O(log n)時間複雜度內實現查找,插入和刪除,任何不平衡都會在三次旋轉內解決。


4.B樹(多路查找樹)

特徵:
1.根節點至少有兩個子女節點;
2.每個非根節點包含的關鍵字個數i滿足:n/2 - 1 < i < n -1;
3.除根節點以外的所有節點(不包括葉子節點)的度數正好是關鍵字的總數+1,故內部子樹個數k滿足:n/2 < k < n -1;
4.所有的葉子節點都位於同一層。


5.B+樹
B+樹是一個n叉樹,每個節點通常都有多個孩子,一顆B+樹包含根節點、內部節點和葉子節點。B+樹的特徵如下:
1.有n個子樹的節點含有n個關鍵字;
2.所有葉子節點包含了全部關鍵字的信息,以及指向這些關鍵字記錄的指針,且葉子節點本身依賴關鍵字的大小,即自小而大順序連接;
3.所有的非終端節點可以看成索引的一部分,節點中包含了其他子樹的最大或最小關鍵字。


B+樹有效內容均保存在葉子節點,且B+樹有兩個指針,一個指向根節點,一個指向關鍵字最小的元素的葉子節點,因此B+樹支持從根節點開始隨機查詢和從最小關鍵字順序查詢。
B+樹相比B樹擁有更小的磁盤代價,讀寫代價更低(因爲同樣的數據量,B+樹比B樹高度低,因爲B+樹非葉子節點不保存數據),B+樹的查詢關鍵字的路徑相等,即從根節點到葉子節點的路徑,即每個數據的查詢效率相等且穩定。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章