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