紅黑樹插入有五種情況,每種情況對應著不同的調整方法:
一、 新結點(A)位于樹根,沒有父結點。
直接讓新結點變色為黑色,規則2得到滿足。同時,黑色的根結點使得每條路徑上的黑色結點數目 都增加了1,所以并沒有打破規則5。
二、 新結點(B)的父結點是黑色
新插入的紅色結點B并沒有打破紅黑樹的規則,所以不需要做任何調整
三、 新結點(D)的父結點和叔叔結點都是紅色
兩個紅色結點B和D連續,違反了規則4。因此我們先讓結點B變為黑色。
這樣一來,結點B所在路徑憑空多了一個黑色結點,打破了規則5。因此我們讓結點A變為紅色
結點A和C又成為了連續的紅色結點,我們再讓結點C變為黑色
四、 新結點(D)的父結點是紅色,叔叔結點是黑色或者沒有叔叔,且新結點是父結點的右孩子,父結 點(B)是祖父結點的左孩子
我們以結點B為軸,做一次左旋轉,使得新結點D成為父結點,原來的父結點B成為D的左孩子
這樣進入了情況5。
五、新結點(D)的父結點是紅色,叔叔結點是黑色或者沒有叔叔,且新結點是父結點的左孩子,父結 點(B)是祖父結點的左孩子
我們以結點A為軸,做一次右旋轉,使得結點B成為祖父結點,結點A成為結點B的右孩子
接下來,我們讓結點B變為黑色,結點A變為紅色。
經過上面的調整,這一局部重新符合了紅黑樹的規則。