出處:https://www.cnblogs.com/myseries/p/10662710.html
紅黑樹的規則:
1)每個結點要么是紅的,要么是黑的。
2)根結點是黑的。
3)每個葉結點(葉結點即指樹尾端NIL指針或NULL結點)是黑的。
4)如果一個結點是紅的,那么它的倆個兒子都是黑的。
5)對於任一結點而言,其到葉結點樹尾端NIL指針的每一條路徑都包含相同數目的黑結點。
現在想想,我的理解是平衡樹(AVL)更平衡,結構上更加直觀,時間效能針對讀取而言更高,但是維護起來比較麻煩!!!(插入和刪除之后,都需要rebalance)。但是,紅黑樹通過它規則的設定,確保了插入和刪除的最壞的時間復雜度是O(log N) 。
設計紅黑樹的目的,就是解決平衡樹的維護起來比較麻煩的問題,紅黑樹,讀取略遜於AVL,維護強於AVL,每次插入和刪除的平均旋轉次數應該是遠小於平衡樹。
小結一下:
能用平衡樹的地方,就可以用紅黑樹。用紅黑樹之后,讀取略遜於AVL,維護強於AVL。