B樹、B+樹、紅黑樹詳細解析

目錄

B樹

特性

結構

應用:

B+樹

特性

數據結構

應用:

紅黑樹

特性

數據結構 

​應用:

相關問題

B樹跟B+樹比較


B樹

特性

一個m階的B樹具有如下特徵:

  1. 根結點至少有兩個子女。
  2. 每個中間節點都包含k-1個元素和k個孩子,其中 m/2 <= k <= m
  3. 每一個葉子節點都包含k-1個元素,其中 m/2 <= k <= m
  4. 所有的葉子結點都位於同一層
  5. 每個節點中的元素從小到大排列,節點當中k-1個元素正好是k個孩子包含的元素的值域分劃。

結構

 

每次深度加1就會進行一次磁盤IO的查詢,將當前高度的數據加到內存中,再進行數值比較。從中可以看出相比大部分的查詢時間是花費在磁盤IO的速度上,所以要想提高性能就是將樹的高度足夠低,IO次數足夠少,這就是B樹的優勢。 

B樹可以直接得到內部節點的值

應用:

主要用於文件系統以及部分數據庫索引(MongoDB) 而Mysql是用B+樹的。


B+樹

特性

  1. 有k個子樹的中間節點包含有k個元素(B樹中是k-1個元素),每個元素不保存數據,只用來索引,所有數據都保存在葉子節點。
  2. 所有的葉子結點中包含了全部元素的信息,及指向含這些元素記錄的指針,且葉子結點本身依關鍵字的大小自小而大順序鏈接。
  3. 所有的中間節點元素都同時存在於子節點,在子節點元素中是最大(或最小)元素。

數據結構

 

應用:

mysql索引 磁盤


紅黑樹

特性

  1. 每個結點要麼是紅的,要麼是黑的。
  2. 根結點是黑的。
  3. 每個葉結點(葉結點即指樹尾端NIL指針或NULL結點)是黑的。
  4. 如果一個結點是紅的,那麼它的倆個兒子都是黑的。
  5. 對於任一結點而言,其到葉結點樹尾端NIL指針的每一條路徑都包含相同數目的黑結點

數據結構 


應用:

內部排序,全部放在內存中的,比如HashMap

紅黑樹解決的問題,它可以在O(log n)時間複雜度內實現查找,插入和刪除,任何不平衡都會在三次旋轉內解決。

設計紅黑樹就是爲了解決平衡樹維護麻煩的問題


相關問題

B樹跟B+樹比較

B+樹相比B樹擁有更小的磁盤代價,讀寫代價更低(因爲同樣的數據量,B+樹比B樹高度低,因爲B+樹非葉子節點不保存數據),B+樹的查詢關鍵字的路徑相等,即從根節點到葉子節點的路徑,即每個數據的查詢效率相等且穩定。

B樹的查找可能比B+樹更加快點,因爲B樹的數據值都在對應的節點上,可能會比B+樹更快的返回。但是如果要去連續的一段值的話,B+樹更加的合適。符合空間局部性。

 

 

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