紅/黑樹狀結構插入情況全過程示範
通過本人的紅/黑樹狀結構系列第4篇文章,我們已經知道,紅/黑樹狀結構的所有插入情況有以下五種:
情形1: 新節點N位於樹的根上,沒有父節點
情形2: 新節點的父節點P是黑色
情形3:父節點P、叔叔節點U,都為紅色,
[對應第二篇文章中,的情況1:z的叔叔是紅色的。]
情形4: 父節點P是紅色,叔叔節點U是黑色或NIL;
插入節點N是其父節點P的右孩子,而父節點P又是其父節點的左孩子。
[對應我第二篇文章中,的情況2:z的叔叔是黑色的,且z是右孩子]
情形5: 父節點P是紅色,而叔父節點U 是黑色或NIL,
要插入的節點N 是其父節點的左孩子,而父節點P又是其父G的左孩子。
[對應我第二篇文章中,情況3:z的叔叔是黑色的,且z是左孩子。]
詳細,可參考此紅/黑樹狀結構系列第4篇文章:一步一圖一代碼,一定要讓你真正徹底明白紅/黑樹狀結構。
首先,各個結點插入與以上的各種插入情況,一一對應起來,
以下的20張圖,是依次插入這些結點:12 1 9 2 0 11 7 19 4 15 18 5 14 13 10 16 6 3 8 17的全程示範圖,已經把所有的5種插入情況,都全部涉及到了:
紅/黑樹狀結構的一一插入各結點:12 1 9 2 0 11 7 19 4 15 18 5 14 13 10 16 6 3 8 17的全程示範圖完。
紅/黑樹狀結構刪除情況全過程示範
紅/黑樹狀結構的所有刪除情況,如下:
情況1: N 是新的根。
情形2:兄弟節點S是紅色
[對應我第二篇文章中,情況1:x的兄弟w是紅色的。]
情況 3: 兄弟節點S是黑色的,且S的倆個兒子都是黑色的。但N的父節點P,是黑色。
[對應我第二篇文章中,情況2:x的兄弟w是黑色的,且兄弟w的倆個兒子都是黑色的。
(這裡,N的父節點P為黑)]
情況4: 兄弟節點S 是黑色的、S 的兒子也都是黑色的,但是 N 的父親P,是紅色。
[還是對應我第二篇文章中,情況2:x的兄弟w是黑色的,且w的倆個孩子都是黑色的。
(這裡,N的父節點P為紅)]
情況5: 兄弟S為黑色,S 的左兒子是紅色,S 的右兒子是黑色,而N是它父親的左兒子。
//此種情況,最後轉化到下面的情況6。
[對應我第二篇文章中,情況3:x的兄弟w是黑色的,w的左孩子是紅色,w的右孩子是黑色。]
情況6: 兄弟節點S是黑色,S的右兒子是紅色,而 N 是它父親的左兒子。
[對應我第二篇文章中,情況4:x的兄弟w是黑色的,且w的右孩子時紅色的。]
接下來,便是一一刪除這些點12 1 9 2 0 11 7 19 4 15 18 5 14 13 10 16 6 3 8 17為例,即,紅/黑樹狀結構刪除情況全程示範:
各個結點刪除與以上的六種情況,一一對應起來,
首先,插入12 1 9 2 0 11 7 19 4 15 18 5 14 13 10 16 6 3 8 17結點後,形成的紅/黑樹狀結構為:
然後,以下的20張圖,是一一刪除這些結點12 1 9 2 0 11 7 19 4 15 18 5 14 13 10 16 6 3 8 17所得到的刪除情況的全程示範圖:
紅/黑樹狀結構的一一刪除各結點:12 1 9 2 0 11 7 19 4 15 18 5 14 13 10 16 6 3 8 17的全程示範圖完。
轉載自:http://blog.csdn.net/v_JULY_v/article/details/6284050