這篇部落格講述的思路比網上大多數人對於紅黑樹的描述要簡單清晰,
總結一下紅黑樹的插入操作,所有的可能性只有4種:
1.樹為空,插入的結點為根結點,節點變色為黑色。
2.插入節點的父親結點為黑色結點,直接插入,不需要任何操作
3.插入節點的父親結點為紅色結點:
3.1.叔叔節點為紅色:將叔叔和父親結點改為黑色,爺爺結點改為紅色,然後將爺爺結點當作插入結點,向上遞迴處理
3.2.叔叔節點為黑色(如果沒有叔叔節點,也將叔叔節點看成黑色,因為紅黑樹的空葉子結點是黑色):進行左右旋轉及變色處理,左右旋轉的方法參考開頭部落格。
最容易懂的紅黑樹
性質一 節點是紅色或者是黑色 性質二 根節點是黑色 性質三 每個葉節點 nil或空節點 是黑色 性質四 每個紅色節點的兩個子節點都是黑色的 也就是說不存在兩個連續的紅色節點 就是連續的兩個節點不能是連續的紅色,連續的兩個節點的意思就是父節點與子節點不能是連續的紅色。性質五 從任一節點到其沒個葉節點的...
紅黑樹原理
若左子樹不為空,則左子樹上所有節點的值都小於根節點的值 若右子樹不為空,則右子樹上所有節點的值都大於根節點的值 且左右子樹都為二叉搜尋樹 查詢 必須從根節點開始查詢 如果值比根節點大則查詢右子樹,否則左子樹,直到找到節點 插入 與查詢類似 逐個節點對比,直到找到滿足條件的null,就插入到相應位置 ...
理解紅黑樹
在樹裡面的節點不是紅色的就是黑色的,沒有其他顏色,要不怎麼叫紅黑樹呢,是吧。性質二 根節點是黑色 根節點總是黑色的。它不能為紅。性質三 每個葉節點 nil或空節點 是黑色 這個可能有點理解困難,可以看圖 這個就是乙個紅黑樹,nil節點是個空節點,並且是黑色的。性質四 每個紅色節點的兩個子節點都是黑色...