演算法導論 第13章 紅黑樹

2022-08-28 19:24:09 字數 1240 閱讀 3621

特點:

1) 每個節點的顏色或是紅,或是黑

2)根節點是黑色

3)葉節點是黑色

4)如果乙個節點是紅色,則葉子為黑

5)對每個節點,從該節點

紅黑樹插入流程:

第一步:

和bst的插入過程相似,將待插入節點z插入到乙個紅黑樹的葉子節點,並著紅色

因為第一步之後可能會違反紅黑樹的某些性質,所以要進行下一步

第二步:

第二步只有當插入節點的父節點為紅色時才會執行,因為這個時候才會違反性質4)顏色調整分為六種情況,根據插入節點的父節點是祖父節點的左子樹還是右子樹分為2種,其中每種情況又有以下三種情況:

情況a:插入節點的父節點是紅色節點並且插入節點的叔叔節點(祖父節點的另外乙個子節點)也是紅色。

情況b:插入節點是父節點的右子樹並且叔叔節點是黑節點

情況c:插入節點是父節點的左子樹並且叔叔節點是黑節點

針對情況a:

針對情況b:

將z的父節點進行一次左旋轉轉換為情況c

針對情況c:

將祖父節點進行一次右旋轉轉換成最終形態

步驟三:

將根節點著為黑色

習題答案:

13.1-2

插入位置是35節點的右子樹

如果被標記為紅色,則不是一顆紅黑樹,因為紅色節點的子節點必須為黑色才滿足紅黑樹的性質。

如果被標為黑色,違反性質5

13.1-3

是13.1-4

兩個節點是黑色=》2

乙個節點是黑色=》3

兩個節點是紅色=》4

13.1-6

紅黑交叉分布:2^(2k+1)-1

全黑:2^k-1

13.1-7

全黑時最小為0:n

紅黑交錯2:1

13.3-1 

如果著為黑色,則會永久破壞性質5。

13.3-4 因為當新插入節點不是根節點時,該節點一定為紅色,不會更改

13.3-5 

todo

我的個人部落格:

演算法導論 13章 紅黑樹

1,每個節點非黑即紅。2,根節點是黑色的。3,葉節點 nil 是黑色的。4,紅節點的兩個孩子都是黑色的。5,對每個節點,從該節點到其所有後代的簡單路徑上,均包含了同樣數目的黑節點。為了維持紅黑樹的性質,要改變某些節點的顏色和指標結構,旋轉改變了指標結構。左旋 以x和y之間的鏈為 支軸 進行的,使得x...

學習 《演算法導論》第13章 紅黑樹 總結三

今天把這編部落格寫完吧,這裡學習紅黑樹的刪除操作,前面學習了 紅黑樹的定義及旋轉 紅黑樹的插入操作 紅黑樹的刪除操作也要結合二叉查詢樹的刪除操作來學習。在一棵n個結點的紅黑樹中刪除乙個結點也是一樣的,要花o lgn 的時間,刪除操作比插入還要複雜!刪除也分為兩步 第一步,當成二叉查詢樹處理,刪除乙個...

《演算法導論》筆記 第13章 13 1 紅黑樹的性質

紅黑樹中每個結點包含五個域 color,key,left,right和p。如果某結點沒有乙個子結點或父結點,則該域指向nil。我們把nil視為二叉樹的外結點 葉子 而帶關鍵字的結點視為內結點。一棵二叉樹如果滿足下面的紅黑性質,則為一棵紅黑樹 1 每個結點或是紅的,或是黑的。2 根結點是黑的。3 每個...