資料結構與演算法之美 26 紅黑樹

2021-10-11 01:12:17 字數 902 閱讀 3128

一顆紅黑樹需要同時滿足以下4個條件:

定義1:根節點是黑色的;

定義2:每個葉子節點都是黑色的空節點(nil),也就是說,葉子節點不儲存資料;

定義3:任何相鄰的節點都不能同時為紅色,也就是說,紅色節點是被黑色節點隔開的;

定義:4:每個節點,從該節點到達其可達葉子節點的所有路徑,都包含相同數目的黑色節點;

1、插入操作

紅黑樹規定,插入的節點必須是紅色的。而且,二叉查詢樹中新插入的節點都是放在葉子節點上

①如果插入節點的父節點是黑色的,那我們什麼都不用做,它仍然滿足紅黑樹的定義。

②如果插入的節點是根節點,那我們直接改變它的顏色,把它變成黑色就可以了。

③除此之外,其他情況都會違背紅黑樹的定義,於是我們就需要進行調整,調整的過程包含兩種基礎的操作:左右旋轉和改變顏色。

2、插入操作的紅黑樹平衡調整

①顏色變換:紅變黑、黑變紅

②左旋、右旋

3、顏色變換和旋轉的規則

①需要變顏色的情況:爸爸、叔叔結點紅色

怎麼變:爸爸和叔叔變成黑色、爺爺變成紅色、指到爺爺結點分析旋轉變換規則

②左旋需要左旋的情況:爸爸紅色,叔叔黑色,當前節點為右子結點

怎麼變:以爸爸結點作為左旋

③右旋需要右旋的情況:爸爸紅色,叔叔黑色,當前節點為左子結點

怎麼變:爸爸變黑色、爺爺變紅色、以爺爺結點作為右旋

1、第一步是針對刪除節點初步調整。初步調整只是保證整棵紅黑樹在乙個節點刪除之後,仍然滿足最後一條定義的要求,也就是說,每個節點,從該節點到達其可達葉子節點的所有路徑,都包含相同數目的黑色節點;

2、第二步是針對關注節點進行二次調整,讓它滿足紅黑樹的第三條定義,即不存在相鄰的兩個紅色節點。

totally 沒看懂!!!

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

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

資料結構與演算法 十三 之紅黑樹

節點的刪除 紅黑樹是一種特殊的二叉搜尋樹 紅黑樹的性質 節點是紅色或黑色。根節點是黑色。每個葉子節點都是黑色的空節點 nil節點 從每個葉子到根的所有路徑上不能有兩個連續的紅色節點。從任一節點到其每個葉子的所有路徑都包含相同數目的黑色節點。1 紅黑樹放棄了追求完全平衡,追求大致平衡,在與平衡二叉樹的...

資料結構之紅黑樹

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