紅黑樹學習筆記

2021-10-02 02:00:27 字數 2016 閱讀 8727

因為學習hashmap的時候,遇到了紅黑樹,故而複習哈,

想深度學習的請轉到下面鏈結,作者**並茂的詳細講解了哈,分析的很清楚,覺得好的不忘給別人手動比心。

30張圖帶你徹底理解紅黑樹

因為從這裡開始,是自己的學習筆記,從上面提到的文章中學習總結的,主要是為了給自己看,記錄哈,容易忘記,純概念,可能比較苦澀,見諒

首先說一下,紅黑樹的規則,

1,根節點必須是黑色的

2,節點只有兩種顏色,黑色和紅色

3,紅色節點的兩個子節點一定都是黑色的

4,每乙個節點通往葉子節點的路徑上的黑色節點的個數相同

5,每個葉子節點都是黑色的

紅黑樹插入節點,8種場景

情景一,紅黑樹為空

直接把插入節點作為根節點

情景二,插入節點的key已經存在

直接替換值

情景三,插入節點的父節點是黑色的

直接插入

情景四,插入節點的父節點是紅色的

1,叔叔節點存在,且為紅色

祖父節點變紅色,父親,叔叔節點轉黑色。

2,叔叔節點為空或者為黑色,且父親節點是祖父節點的左子節點

<1>插入節點是父節點的左子節點

祖父節點變為紅色,父節點變為黑色,右旋祖父節點

<2>插入節點是父親節點的右子節點,

父親節點左旋,父親節點轉黑色,祖父節點轉紅色,右旋祖父節點

3,叔叔節點為空或為黑色,且父親節點是祖父節點的右子節點

<1>插入節點是父親節點的右子節點

祖父節點變為紅色,父親節點變為黑色,左旋祖父節點

<2>插入節點是父親節點的左子節點

右旋父親節點,父親節點變為紅色,祖父節點變為黑色,左旋祖父節點

紅黑樹刪除場景,9中場景,

刪除場景,

1,沒有子節點,直接刪除

2,只有乙個子節點,用子節點代替刪除節點。

3,有兩個子節點,用後繼節點代替刪除節點(其實用前繼節點也一樣)。後繼節點就是,右子樹最左邊的葉子節點

刪除思想,在不考慮鍵值的情況下,將刪除節點,轉換為刪除替換節點。替換節點就是後繼節點。並且在最後,將刪除節點的鍵值改為替換節點的值,並將替換節點刪除,所以此處我們就需要考慮替換節點刪除時的,二叉樹平衡問題。

情景一,替換節點是紅色,

直接刪除

情景二,替換節點是黑色

2.1,替換節點是左子節點

2.1.1替換節點的兄弟節點是紅色節點

兄弟節點轉換為黑色,父親節點轉換為紅色,左旋父親節點。那麼轉到2.1.2.(3);

2.1.2替換節點的兄弟節點是黑色節點

2.1.2.(1)替換節點的兄弟節點的左子節點顏色任意,右子節點紅色

修改兄弟節點的顏色為父節點的顏色,父親節點修改為黑色,兄弟節點的右子節點修改為黑色,左旋父親節點

2.1.2.(2)替換節點的兄弟節點的左子節點是紅色,右子幾點是黑色

兄弟節點的左子節點變為黑色,兄弟節點變為紅色,兄弟節點右旋,轉到2.1.2.(1)

2.1.2.(3)替換節點的兄弟節點的左子節點是黑色,右子節點是黑色

兄弟節點變為紅色,替換節點變為父節點,繼續進行刪除規則。

當替換節點向上,定位到根節點的時候,結束,並刪除節點

2.2,替換節點是右子節點

2.2.1 替換節點的兄弟節點是紅色節點的時候,

兄弟節點變為黑色,父親節點變為紅色,父親節點右旋,轉到2.2.2.(3)

2.2.2 替換節點的兄弟節點是黑色節點的時候

2.2.2.(1) 替換節點的兄弟節點的左子節點是紅色,右子節點任意

左子節點變為父親節點的顏色,父親節點變為紅色,兄弟節點的左子節點變為黑色,右旋父親節點。

2.2.2.(2)替換節點兄弟節點的左子節點是黑色,右子節點是紅色,

兄弟節點變為紅色,右子節點變為黑色,左旋兄弟節點,轉到2.2.2.(1)

2.2.2.(3)替換節點的兄弟節點的左子節點是黑色,右子節點也是黑色,

兄弟節點轉為紅色節點,刪除節點變為父節點,繼續進行刪除規則。

紅黑樹學習筆記

二叉樹,他的定義是每個節點最多只有兩個子樹 即左子樹和右子樹,當然也可以沒有子樹 如下圖是乙個簡單的二叉樹 對於這樣的資料結構,在c語言中通常這樣來定義結構體?1 2 3 4 5 typedefstruct binary tree binarytree 二叉搜尋樹,首先他也是乙個二叉樹,與二叉樹不同...

紅黑樹學習筆記

1.每個節點不是紅色就是黑色 2.不可能有連在一起的紅色節點 3.根節點都是黑色的 root 沒有父節點的節點就是根節點,即入度為0 4.每個紅色節點的兩個子節點都是黑色,葉子節點都是黑色,出度為0,滿足了性質就可以近似的平衡了,不一定要紅黑,也可以是其他的。紅黑樹有三種旋轉方式 1.改變顏色 紅變...

紅黑樹筆記

1.紅黑樹的根是黑的 2.所有外部節點 nil 都是黑的 3.其餘節點若為紅則只能有黑孩子 紅節點的兒子和父親都是黑色的 4.外部節點到根途經的黑節點數目相等 黑深度 外部節點是一類本不存在的節點 引入是為了方便分析和實現 紅黑樹的區域性結構無非四種 總是假設插入的節點是紅色 除非是根 1.雙紅缺陷...