在知乎老師的幫助下,剛剛開始學習紅黑樹,個人的總結記錄下
對於treemap.class新增方法的了解:
先貼**(treemap.class新增調整方法):
一共分為4種情況(實際來說3種,這裡為了方便記錄):
當新增節點父級節點是祖父級節點的左兒子時:
第一種情況:
第二種情況:
當新增節點父級節點是祖父級節點的右兒子時:
第一種情況:
第二種情況:
紅黑樹的新增調整方法,就先記錄到這裡
對了,別忘了最後把根節點設定成黑色
root.color = black;//設定根節點為黑色
自己的總結:
三種情況(當前節點的父節點為紅色):
1.當叔叔節點為紅色:把父節點和叔叔節點設定成黑色,祖父設定成紅色,把當前節點的引用指向祖父節點,繼續迴圈判斷
2.當叔叔節點為黑色:如果當前節點是父節點的右孩子,對父節點進行左轉,然後當前節點引用指向父節點,然後把父節點設定成黑色,祖父節點設定成紅色,對祖父節點進行右轉
3.當叔叔節點為黑色:如果當前節點是父節點的左孩子,對父節點進行右轉,然後當前節點引用指向父節點,然後把父節點設定成黑色,祖父節點設定成紅色,對祖父節點進行右轉
學習紅黑樹後個人總結 插入刪除
一 概念 r b tree,全稱是red black tree又稱紅黑樹,它是一種特殊的二叉查詢樹,紅黑樹的每個節點上都有儲存位表示節點的顏色,可以是紅或黑。二 特性 1 每個節點或者是紅色,或者是黑色 2 根節點是黑色的 3 每個葉子節點 nil 是黑色的。注意 這裡的葉子節點,是指為空的葉子節點...
紅黑樹學習總結 刪除
看了蠻多種講解,個人感覺這個專欄情況分得比較細,比較適合我這樣頭腦不太靈光的初學者一些。一步簡化 如果需要刪除的結點有兩個孩子,我們的做法是找到這個結點的中序後繼,將後繼結點中的資料拷貝至待刪除結點,然後刪除後繼結點。而後繼結點必然最多只有乙個子結點,這樣我們就把刪除兩個孩子的結點轉為刪除乙個孩子的...
紅黑樹學習總結 二 之刪除篇
紅黑樹的五條性質 每個節點非紅即黑 根節點為黑 紅節點的兩個子節點都為黑 每個葉子節點都為黑 對於任一節點而言,其到葉子節點的每一條路徑都包含相同數目的黑節點 說真的在學紅黑樹的時候,看網上寫的部落格真的是一臉懵逼,完全不知道在講什麼東西,身邊的同事也沒有對它比較理解的,以至於我學了整整2天才把紅黑...