理解紅黑樹

2021-08-18 10:17:39 字數 569 閱讀 2222

在樹裡面的節點不是紅色的就是黑色的,沒有其他顏色,要不怎麼叫紅黑樹呢,是吧。 

性質二:根節點是黑色;

根節點總是黑色的。它不能為紅。 

性質三:每個葉節點(nil或空節點)是黑色;

這個可能有點理解困難,可以看圖: 

這個就是乙個紅黑樹,nil節點是個空節點,並且是黑色的。 

性質四:每個紅色節點的兩個子節點都是黑色的(也就是說不存在兩個連續的紅色節點);

就是連續的兩個節點不能是連續的紅色,連續的兩個節點的意思就是父節點與子節點不能是連續的紅色。

**性質五:從任一節點到其沒個葉節點的所有路徑都包含相同數目的黑色節點;**

還是看圖:

下面是左旋和右旋:

左旋:

最後的最後的最後,一定要嘗試著自己推導一下插入刪除規則啊,不然經常忘,是睡一覺起來再看就有點懵逼的那種忘。

原文

紅黑樹理解

近期讀 linux核心設計與實現 第三版 清晰中文版 發現linux低層資料結構很多都用到紅黑樹,查查資料說說自己的理解。紅黑樹 二叉樹 高度限制 二叉樹 確定了它的查詢非常快。高度限制 這個是取普通二叉樹和平衡二叉樹之間。普通二叉樹,只管插入不做調整,可能會出現單鏈很長。平衡二叉樹,所有的鏈高度相...

徹底理解紅黑樹

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

紅黑樹的理解

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