紅黑樹的特點


先說平衡二叉樹(AVLTree):

作用:就是查找,AVL樹的查找,插入和刪除再平均和最壞情況下都是O(logn)。如果再AVL樹中插入或刪除節點后,使得高度之差大於1.此時AVL樹的平衡狀態就被破壞,他就不是一顆平衡二叉樹。如果要它維持在一個平衡狀態,就需要對其進行旋轉處理,那么創建一顆二叉樹的成本其實不小。就有人提出了紅黑樹理論,那么紅黑樹到底比AVL樹好在哪里?

 

  • 紅黑樹與AVL樹的比較:
    1. AVL樹的時間復雜度雖然由於紅黑樹,但是對於現在的計算機,cpu太快,可以忽略性能差異。
    2. 紅黑樹的插入刪除比AVL樹更便於控制操作。
    3. 紅黑樹整體性能略優於AVL樹。(紅黑樹旋轉情況少於AVL樹)
  • 紅黑樹的性質:(時間復雜度o(lgn))
    • 每個節點不是黑色就是紅色
    • 根節點是黑色的。
    • 如果一個節點是紅色,那么他的倆個子節點就是黑色
    • 對於每個節點,從該節點到其后代葉結點的簡單路徑上包含相同數目的黑色節點。
  • 如何保證最長路路徑不超過最短路徑的倆倍呢?
    • 最短路徑:全是黑節點;最長路徑:黑白相間。-----》所以當最長路徑黑色節點數目同最短路徑黑色節點相同時,最長路徑恰好是最短路徑的倆倍。
    • 顏色表示:因為每個結點都只會有一條指向自己的鏈接(從它的父結點指向它),我們將鏈接的顏色保存在表示結點的Node數據類型的布爾變量color中(若指向它的鏈接是紅色的,那么該變量為true,黑色則為false)。當我們提到一個結點顏色時,我們指的是指向該結點的鏈接的顏色。

參考:https://blog.csdn.net/yang_yulei/article/details/26066409?utm_medium=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromMachineLearnPai2-1.nonecase&depth_1-utm_source=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromMachineLearnPai2-1.nonecase

https://blog.csdn.net/tanrui519521/article/details/80980135?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.nonecase&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.nonecase


免責聲明!

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



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