數(shù)據(jù)結構與算法:紅黑樹插入調整方案
紅黑樹插入有五種情況,每種情況對應著不同的調整方法:
一、 新結點(A)位于樹根,沒有父結點。
直接讓新結點變色為黑色,規(guī)則2得到滿足。同時,黑色的根結點使得每條路徑上的黑色結點數(shù)目 都增加了1,所以并沒有打破規(guī)則5。

二、 新結點(B)的父結點是黑色
新插入的紅色結點B并沒有打破紅黑樹的規(guī)則,所以不需要做任何調整

三、 新結點(D)的父結點和叔叔結點都是紅色
兩個紅色結點B和D連續(xù),違反了規(guī)則4。因此我們先讓結點B變?yōu)楹谏?/p>

這樣一來,結點B所在路徑憑空多了一個黑色結點,打破了規(guī)則5。因此我們讓結點A變?yōu)榧t色

結點A和C又成為了連續(xù)的紅色結點,我們再讓結點C變?yōu)楹谏?/p>

四、 新結點(D)的父結點是紅色,叔叔結點是黑色或者沒有叔叔,且新結點是父結點的右孩子,父結 點(B)是祖父結點的左孩子
我們以結點B為軸,做一次左旋轉,使得新結點D成為父結點,原來的父結點B成為D的左孩子

這樣進入了情況5。
五、新結點(D)的父結點是紅色,叔叔結點是黑色或者沒有叔叔,且新結點是父結點的左孩子,父結 點(B)是祖父結點的左孩子
我們以結點A為軸,做一次右旋轉,使得結點B成為祖父結點,結點A成為結點B的右孩子

接下來,我們讓結點B變?yōu)楹谏Y點A變?yōu)榧t色。

經過上面的調整,這一局部重新符合了紅黑樹的規(guī)則。















 
 
 











 
 
 
 