紅黑樹的理解

2021-09-26 10:27:51 字數 493 閱讀 1986

一、紅黑樹要達到自平衡的二叉樹,必須滿足下面5個性質:

1、每個節點要麼是黑色,要麼是紅色。

2、根節點是黑色。

3、每個紅色節點的兩個子節點一定是黑色。

4、任意乙個節點到每個子節點的路徑都包含相同梳理的黑節點。(所以乙個節點存在乙個黑子節點,那肯定兩個子節點都是黑色)

5、每次新增的新節點,都是紅色。

二、紅黑樹需要通過變色,左旋,右旋達到平衡:

左旋:旋轉點往左邊下沉,以某個節點作為旋轉點,它作為右子節點的左節點,原右子節點的左節點作為它的右節點。

右旋:旋轉點往右邊下沉,以某個節點作為旋轉點,它作為左子節點的右子節點,原左子節點的右子節點作為它的左節點。

三、紅黑樹插入資料時7中情況。

理解紅黑樹

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

紅黑樹理解

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

紅黑樹的理解

紅黑樹特點 每個節點非紅即黑 根節點總是黑色的 每個葉子節點都是黑色的空節點 nil節點 如果節點是紅色的,則它的子節點必須是黑色的 反之不一定 從根節點到葉節點或空子節點的每條路徑,必須包含相同數目的黑色節點 即相同的黑色高度 紅黑樹的應用 treemap treeset以及jdk1.8之後的ha...