1. 程式人生 > >紅黑樹筆記

紅黑樹筆記

nbsp 刪除 分析 父親 都是 方便 紅孩子 http 兩個

1.紅黑樹的根是黑的

2.所有外部節點[NIL]都是黑的

3.其余節點若為紅則只能有黑孩子//紅節點的兒子和父親都是黑色的

4.外部節點到根途經的黑節點數目相等//黑深度

外部節點是一類本不存在的節點 引入是為了方便分析和實現

紅黑樹的局部結構無非四種

技術分享圖片

總是假設插入的節點是紅色 除非是根

1.雙紅缺陷

技術分享圖片 技術分享圖片

情況1:叔父節點是黑色

技術分享圖片

情況2:叔父節點是紅色

技術分享圖片

刪除

情況1:要刪除的是紅節點 紅節點對黑高沒有影響 或者刪除的點是黑節點 但它至少有一個紅兒子//x和它的兒子至少有一個是紅的

技術分享圖片

雙黑缺陷:x和它的兒子全是黑的 刪除x後全樹的黑深度不再統一

技術分享圖片

BB-1:x的兄弟節點s為黑 且s至少有一個紅孩子t

技術分享圖片

s直接繼承p的顏色

BB-2R:x的兄弟s為黑 且s的兩個孩子均為黑;p為紅

技術分享圖片

BB-2B:x的兄弟s為黑 且s的兩個孩子均為黑;p為黑

技術分享圖片

s染紅相當於做合並

BB-3:x的兄弟s是紅色 其余討論節點均為黑

技術分享圖片

經過一次zig 或 zag s變黑 p變紅 則此時情況轉變為 x擁有一個黑兄弟s‘的情況

既然p已經轉紅 那麽只可能出現BB-1和BB-2R 因此我們不會連續出現下溢

技術分享圖片

紅黑樹筆記