資料結構查詢演算法之紅黑樹

2021-10-05 22:16:44 字數 613 閱讀 6417

紅黑樹對於結點的顏色設定不是任意的,需滿足以下性質的二叉查詢樹才是紅黑樹:

紅黑樹中每個結點都有各自的黑高度,整棵樹也有自己的黑高度,即為根結點的黑高度,例如圖 1 中的紅黑樹的黑高度為 3。

對於一棵具有 n 個結點的紅黑樹,樹的高度至多為:2lg(n+1)。所以紅黑樹的時間複雜度為o(logn)

紅黑樹中插入新節點

插入位置為整棵樹的樹根。處理辦法:只需要將插入結點的顏色改為黑色即可。

插入位置的雙親結點的顏色為黑色。處理方法:此種情況不需要做任何工作,新插入的顏色為紅色的結點不會破壞紅黑樹的性質。

插入位置的雙親結點的顏色為紅色。處理方法:由於插入結點顏色為紅色,其雙親結點也為紅色,破壞了紅黑樹第 4 條性質,此時需要結合其祖父結點和祖父結點的另乙個孩子結點(父結點的兄弟結點,此處稱為「叔叔結點」)的狀態,分為 3 種情況討論:

將紅黑樹按照二叉查詢樹刪除結點的方法刪除指定結點;

重新調整刪除結點後的樹,使之重新成為紅黑樹;(還是通過旋轉和重新著色的方式進行調整)

如果刪除結點的顏色為紅色,則不會破壞;

如果刪除結點的顏色為黑色,則肯定會破壞紅黑樹的第 5 條性質,此時就需要對樹進行調整,調整方案分 4 種情況討論:

資料結構之紅黑樹

定義 紅黑樹是一顆二叉查詢樹,樹中結點顏色或為紅色或為黑色,且滿足如下條件 根結點和所有外結點的顏色為黑色 根結點到任意乙個外結點的路徑上沒有連續的兩個紅色結點,若乙個結點是紅色,則其兩個兒子結點都是黑色 根結點到任意外結點的路徑上都有相同數目的黑色結點。1 插入操作 插入操作可以概括為以下幾個步驟...

《資料結構與演算法》之紅黑樹

二叉查詢樹對於某個節點而言,其左子樹的節點關鍵值都小於該節點關鍵值,右子樹的所有節點關鍵值都大於該節點關鍵值。二叉查詢樹作為一種資料結構,其查詢 插入和刪除操作的時間複雜度都為 o logn 底數為 2。但是我們說這個時間複雜度是在平衡的二叉查詢樹上體現的,也就是如果插入的資料是隨機的,則效率很高,...

資料結構 紅黑樹

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