二叉樹對比紅黑樹


參考:

https://blog.csdn.net/wanderlustLee/article/details/81297253

 

為了解決查找的問題,減少查找磁盤的io。

二叉樹: 

  規定值根節點大於左節點,小於右節點。

      當大量插入有序數據,造成結構線性化,引出平衡二叉樹(規定葉子節點的高度差不超過1)。

 

 

    平衡二叉樹:通過旋轉來維持平衡。

    紅黑樹(沒有規定葉子節點的高度差不大於1):

  1紅黑樹只追求近似平衡,所以在插入與刪除節點時,翻轉次數遠遠少於平衡樹,因此在需要較多插入刪除操作的場景中,使用紅黑樹更好。

     2 通過一定的規則來保證平衡(變色,左旋轉,右旋轉)

 

B-樹:
是一種多路搜索樹(並不是二叉的):
1.定義任意非葉子結點最多只有M個兒子;且M>2;
2.根結點的兒子數為[2, M];
3.除根結點以外的非葉子結點的兒子數為[M/2, M];

B-樹的特性:
1.關鍵字集合分布在整顆樹中;
2.任何一個關鍵字出現且只出現在一個結點中;
3.搜索有可能在非葉子結點結束;
4.其搜索性能等價於在關鍵字全集內做一次二分查找;
5.自動層次控制;
由於限制了除根結點以外的非葉子結點,至少含有M/2個兒子,確保了結點的至少
利用率,其最底搜索性能為:

其中,M為設定的非葉子結點最多子樹個數,N為關鍵字總數;
所以B-樹的性能總是等價於二分查找(與M值無關),也就沒有B樹平衡的問題;
由於M/2的限制,在插入結點時,如果結點已滿,需要將結點分裂為兩個各占
M/2的結點;刪除結點時,需將兩個不足M/2的兄弟結點合並;


鏈接:https://www.jianshu.com/p/332caf8bed3a

 

B+樹的引入: 隨着樹高度的增加,頻繁的I/O操作一定會降低查詢的效率。所以B樹就被搞出來降低樹的高度,從而減少磁盤的訪問。

參考:

https://blog.csdn.net/wanderlustLee/article/details/81297253

https://blog.csdn.net/liang3720/article/details/81700748

 

應用場景:https://blog.csdn.net/qq_36183935/article/details/81095212

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM