資料結構之紅黑樹

2021-07-29 16:32:48 字數 1116 閱讀 6506

定義:紅黑樹是一顆二叉查詢樹,樹中結點顏色或為紅色或為黑色,且滿足如下條件:

⑴根結點和所有外結點的顏色為黑色;

⑵根結點到任意乙個外結點的路徑上沒有連續的兩個紅色結點,(若乙個結點是紅色,則其兩個兒子結點都是黑色);

⑶根結點到任意外結點的路徑上都有相同數目的黑色結點。

1:插入操作

插入操作可以概括為以下幾個步驟:

⑴查詢要插入的位置,時間複雜度為o(n);

⑵將新結點的顏色賦為紅色;

⑶自下而上重新調整該樹為紅黑樹。

其中,第⑵步之所以將新插入的結點顏色賦為紅色,是因為:如果設為黑色,就會導致根到外結點的路徑上有一條路上多乙個額外的黑色結點,這是很難調整的。但是設為紅色結點後,可能會導致出現兩個連續紅色結點的衝突,那麼可以通過顏色調換和樹旋轉來調整。下面討論第⑶步的細節:

設要插入的結點為n,n的父結點為p,p的父結點為g,p的兄弟結點為u。

①如果p是黑色結點,則整棵樹不必調整便是紅黑樹;

②如果p是紅色結點(p的父結點g一定是黑色結點),則插入n後,需要進行調整。調整時有一下三種情況:

⑴n的叔叔結點u是紅色結點

如上圖所示,將p和u調整為黑色並將g調整為紅色。現在新結點n有了乙個黑色的父結點p,因為通過p和u的任何路徑都必定通過結點g,在這些路徑上黑色結點數目沒有改變。但是,紅色結點g的父結點也有可能是紅色的。為了解決這個問題,在結點g上遞迴調整顏色。

⑵n的叔叔u是黑色結點,並且n是左孩子

如上圖所示,對祖父結點g進行一次右旋轉;在旋轉產生的樹中,以前的父結點p現在是新結點n和以前祖父結點g的父結點,然後交換以前父結點p和祖父結點g的顏色。

⑶n的叔叔u是黑色結點,並且n是右孩子

如上圖所示,對p進行一次左旋轉調整新結點n和父結點p的角色;接著按情況⑵進行處理。

資料結構 紅黑樹

紅黑樹是二叉排序樹的改進,紅黑樹有幾個特點 1 節點只有2中顏色,紅色和黑色。2 根節點一定是黑色節點。3 紅色節點的子節點一定是黑色節點。4 黑色高度 根節點到每個葉子節點的路徑長度包含相同的黑色節點 相等。規定的插入的節點一定是紅色節點,紅黑樹的插入節點後需要調整的規則,插入節點需要調整的情況有...

資料結構 紅黑樹

一 紅黑樹 紅黑樹 red black tree 是一種自平衡二叉查詢樹,是在 電腦科學中用到的一種 資料結構 典型的用途是實現 關聯陣列 可以保證最長路徑不超過最短路徑的2倍,近似平衡。二 性質 性質1.節點是紅色或黑色。性質2.根節點是黑色。性質3 每個葉節點 nil節點,空節點 是黑色的。性質...

資料結構 紅黑樹

紅黑樹是一棵二叉搜尋樹,它在每個節點上增加了乙個儲存位來表示節點的顏色,可以是紅色也可以是黑色。通過對任何一條從根到葉子簡單路徑上的顏色來約束,紅黑樹保證最長路徑不超過最短路徑的兩倍,因而近似於平衡。紅黑樹滿足下面的性質 1 每個節點,不是紅色就是黑色的 2 根節點是黑色的 3 如果乙個節點是紅色的...