紅黑樹理解

2022-07-24 00:57:26 字數 528 閱讀 8187

近期讀《linux核心設計與實現_第三版_清晰中文版》,發現linux低層資料結構很多都用到紅黑樹,查查資料說說自己的理解。

紅黑樹:二叉樹+高度限制

二叉樹:確定了它的查詢非常快。

高度限制:這個是取普通二叉樹和平衡二叉樹之間。

普通二叉樹,只管插入不做調整,可能會出現單鏈很長。

平衡二叉樹,所有的鏈高度相等,但存就需要調整,非常耗時。

紅黑樹,最長單鏈不會超過最短單鏈2倍,這樣也確定它存的耗時也居中。

紅黑樹特點5條:

1.所有節點非紅及黑。

2.根節點為黑節點。

3.所有葉子節(null)點為黑色。

4.所有節點到葉子節點中黑色節點數目相同。(確定最長單鏈不會超過最短單鏈2倍)

5.如果乙個節點為紅色,則它的子節點節點必須為黑色。

紅黑樹的操作:

查:二叉樹的特性決定它高效。

增:加入紅節點,根據旋轉、著色來保持紅黑樹特性。

刪:根據旋轉、著色來保持紅黑樹特性。

細節邏輯沒去實現,參考:

理解紅黑樹

在樹裡面的節點不是紅色的就是黑色的,沒有其他顏色,要不怎麼叫紅黑樹呢,是吧。性質二 根節點是黑色 根節點總是黑色的。它不能為紅。性質三 每個葉節點 nil或空節點 是黑色 這個可能有點理解困難,可以看圖 這個就是乙個紅黑樹,nil節點是個空節點,並且是黑色的。性質四 每個紅色節點的兩個子節點都是黑色...

徹底理解紅黑樹

在學習紅黑樹的時候,看了很多文章,發現都沒有講明白紅黑樹的原理,只是簡單列了紅黑樹的幾條規則,就開始講解紅黑樹的插入,讓人一直不知其所以然。也很難深刻的理解紅黑樹。最後翻起了 演算法 這本書,仔細了解了二叉樹查詢樹 2 3樹 紅黑樹,才明白了紅黑樹不是平白無故產生的,而是符合科學的發展觀念是循序漸進...

紅黑樹的理解

一 紅黑樹要達到自平衡的二叉樹,必須滿足下面5個性質 1 每個節點要麼是黑色,要麼是紅色。2 根節點是黑色。3 每個紅色節點的兩個子節點一定是黑色。4 任意乙個節點到每個子節點的路徑都包含相同梳理的黑節點。所以乙個節點存在乙個黑子節點,那肯定兩個子節點都是黑色 5 每次新增的新節點,都是紅色。二 紅...