数据结构与算法 / 红黑树
生活随笔
收集整理的這篇文章主要介紹了
数据结构与算法 / 红黑树
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
一、定義
二、性質
? ? ? ?紅黑樹解決了 AVL 樹增、刪時耗時過大的問題。
? ? ? ?因為,定義中 3 和 4 使得紅黑樹的根節點到葉子節點的最長的可能路徑不多于最短的可能路徑的兩倍長,導致該樹是大致平衡的樹,所以對于增、刪的操作沒有那么的嚴格。
三、時間復雜度
? ? ? ?增、刪、查的時間復雜度的平均和最壞都維持在O(logn),推導過程如下鏈接。
https://mp.csdn.net/postedit/103172135
四、源碼
? ? ? ?相關代碼參考?linux?內核中紅黑樹的實現。
五、樹的演化
六、拓展
1、根節點為什么必須是黑色的?
? ? ? ?主要還是因為性質 3 和 4 。假設樹只有兩個節點(5)和(2),并且根節點設置為紅色且子節點不能為紅色,那么紅黑樹如下所示:
? ? ? ?尷尬,不滿足性質 4 。所以需要旋轉,使其滿足。結果如下所示:
? ? ? ?既然如此,可以直接規定根節點必須為黑色。
?
參考:極客時間《數據結構與算法之美》王爭
這門課真心推薦,內容很經典、栗子很形象,里面還包含了很多面試題目。真是居家旅行必備良藥。
?
(SAW:Game Over!)
總結
以上是生活随笔為你收集整理的数据结构与算法 / 红黑树的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 数据结构与算法 / 平衡二叉树(AVL树
- 下一篇: Cpp 对象模型探索 / 类引入虚函数有