紅黑樹特徵和翻轉操作

2021-09-21 17:36:18 字數 542 閱讀 3979

紅黑樹特徵:

紅黑樹是每個節點都帶有顏色屬性的二叉查詢樹

性質1. 節點是紅色或黑色。

性質2. 根節點是黑色。(最頂端的中間節點為根節點)

性質3 每個葉節點(nil節點,空節點)是黑色的。

性質4 每個紅色節點的兩個子節點都是黑色。(從每個葉子到根的所有路徑上不能有兩個連續的紅色節點)

性質5. 從任一節點到其每個葉子的所有路徑都包含相同數目的黑色節點。

紅黑樹的左旋操作

假設待左旋的結構中,x為父節點,y為孩子節點。左旋操作後,y節點代替x節點的位置,x節點成為y節點的左孩子,y節點的左孩子成為x節點的右孩子。

紅黑樹的右旋操作

假設待右旋的結構中,x為父節點,y為孩子節點。右旋操作後,y節點代替x節點的位置,x節點成為y節點的右孩子,y節點的右孩子成為x節點的左孩子。

紅黑樹筆記 紅黑樹的插入操作

紅黑樹的插入操作可以在o logn 的時間內完成。開始插入節點的時候和二叉查詢樹一樣,只需要最後將插入的節點著成紅色,為了保證紅黑樹的性質,需要通過rb insertfixup函式來調整該節點,對其重新著色並旋轉。下面先呼叫rb insert 函式將乙個節點插入到紅黑樹中,同樣先上偽 rb inse...

紅黑樹刪除操作

紅黑樹刪除操作 紅黑樹要刪除某個key值時,首先還是要查詢該key值在樹中的位置,查詢方法和搜尋二叉樹方法相同 要刪除的結點分為兩種情況 有左右兩個孩子都存在 兩個孩子都存在時,在該節點的右子樹中尋找其直接後繼,找到後用其值替換要刪除節點的值,然後問題轉化為刪除該節點的直接後繼,直接後繼是有乙個右孩...

紅黑樹的各種操作

紅黑樹各種操作 include stdafx.h include using namespace std enum mycolor typedef int dtype struct rbtree 查詢節點資訊 rbtree search rbtree r,dtype val return x 左旋轉...