看板 Grad-ProbAsk 關於我們 聯絡資訊
https://i.imgur.com/TMCf9D4.jpg 第一個圖插入10之後,2、8有一定要變黑嗎? 如果2、8維持紅色,應該也是符合紅黑樹 的規則吧?而且對應的2-3-4樹高度反而比較低不是嗎? 可是為什麼圖中要將2、8變為黑色? 還是我有理解錯的地方呢 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 27.52.169.125 ※ 文章網址: https://www.ptt.cc/bbs/Grad-ProbAsk/M.1506513491.A.9D1.html
sarsman: Searching 10時,路徑上的點有兩個紅子node要變色沒錯09/27 20:10
sarsman: 變色後5變紅,Insert完10並做完Rotation後才再把5變回黑09/27 20:12
s1020824: 插入完11後不用09/27 20:20
s1020824: 是等下一次插入時先走一次路徑09/27 20:20
s1020824: 如果路徑上有一父點兩紅子點的話就要color change09/27 20:20
s1020824: 確定路上都沒有違規以後再插入09/27 20:20
抱歉我說錯了,是插入10之後,第二張圖是insert10 ※ 編輯: jouen (27.52.169.125), 09/27/2017 20:21:48
s1020824: 2.8是在10插入前就變黑了09/27 20:30
s1020824: 這時5會從黑變紅09/27 20:30
s1020824: 先變完確認路徑上沒問題再插入1009/27 20:30
s1020824: 再rotation09/27 20:30
s1020824: 最後才把5變回黑色09/27 20:30
s1020824: 抱歉按到噓了qq09/27 20:31
還是不太了解,圖1原本2.8是紅色,加入10之後,不是處理RL就好了嗎?為什麼2.8也會 變黑色? 這個結果會有什麼問題嗎? https://i.imgur.com/mDO3IFo.jpg ※ 編輯: jouen (27.52.169.125), 09/27/2017 21:57:05
blackhair25: https://i.imgur.com/O9t9Pod.jpg 大概是這樣,有錯09/27 22:30
blackhair25: 誤麻煩指證09/27 22:30
請問searching遇到一父二紅子要改顏色是必要程序嗎? 聖經版定義? 他是為了避免向 上產生連鎖rotation的情況嗎? ※ 編輯: jouen (27.52.169.125), 09/27/2017 23:04:54
gary70812: 我怎麼記得可以不用改@@ 紅黑樹蠻多版本的QQ 09/28 00:01
gary70812: 剛剛用網頁跑出來似乎也是不用改? 09/28 00:58
gary70812: https://i.imgur.com/ZqzwUA8.jpg 09/28 01:01
sarsman: http://i.imgur.com/wW8CgHx.jpg 楓葉本顏色修正的code 09/28 01:34
sarsman: http://i.imgur.com/i0QHxHn.jpg 我實際操作起來怪怪的 09/28 01:37
sarsman: ,感覺是right-rotate的問題,但不知道怎麼改 09/28 01:37
sarsman: 我一樓提的做法是洪逸版http://i.imgur.com/KwgbZAG.jpg 09/28 01:42
gary70812: 大大您有先進case2嗎?我剛剛自己操作一次結果是進case 09/28 09:44
gary70812: 2 然後case3就結束了 09/28 09:44
gary70812: 到case3我的z是11不是10 09/28 09:45
FRAXIS: 變成黑色的作法是 top-down 法 不變的是 bottom-up 法 09/28 09:54
outofyou: sarsman提供的top-down法,能保證2步跟4步不會同時出現? 09/28 11:09
outofyou: 參考csee.umbc.edu的top-down投影片,也不需要2,8的變色 09/28 11:30
outofyou: 其實也解釋了就算是bottom-up,也頂多動到祖父的祖父。 09/28 11:41
outofyou: 所以2,8不用變色是沒錯的。 09/28 11:45
FRAXIS: 不管是 top-down 或是 bottom-up 都有可能有O(lg n)變色 09/28 11:50
sarsman: 原來,我忘記在一開始else後把else if的right改成left, 09/28 11:52
sarsman: 謝謝g大XD 09/28 11:52
FRAXIS: ItoA 上面的方法是 bottom-up 的 09/28 11:55
FRAXIS: sarsman提供的 top-down 很奇怪 因為 top-down 的目的 09/28 11:59
FRAXIS: 就是保證 search path 的尾端是黑色,所以可直接插入紅點 09/28 11:59
FRAXIS: 所以 step 4 不可能會發生 如果 step 做的對的話 09/28 12:00
FRAXIS: 而且 step 2 可能會有 O(lg n) 個 rotation.. 09/28 12:00
outofyou: F大可以提供O(lg n)變色的例子嗎? 09/28 12:01
gary70812: 可不可以只記一種qq 09/28 12:06
sarsman: Note的2跟4頂多只會做一個應該是指做過2就不會做4,可是2 09/28 12:14
sarsman: 的確可能需要多次的Rotation 09/28 12:14
sarsman: 洪逸沒提到Search path最後要黑點才能插入新的紅點,我想 09/28 12:16
sarsman: step4就是為了補足這點 09/28 12:16
FRAXIS: ftp://ftp.cs.princeton.edu/techreports/1985/006.pdf 09/28 20:36
FRAXIS: Figure 4,就類似這樣 因為插入就是在找 black uncle 09/28 20:37
FRAXIS: 沒有 black uncle 就只好一直變色上去.. (bottom-up法) 09/28 20:37
FRAXIS: 不要管這 paper 的內文 因為這是第三種 red-black 09/28 20:43
FRAXIS: 這 paper 是 top-down 且保證 amortized O(1) rotation 09/28 20:44
outofyou: 謝謝F大,我研究一下 09/28 21:13
sarsman: 謝謝F大分享,晚點回家研究 09/28 21:21
outofyou: 謝F大糾正,我對csee.umbc.edu的top-down投影片理解錯誤 09/29 12:10
outofyou: csee.umbc.edu寫的top-down會讓2,8變色,bottom-up不會。 09/29 12:12
outofyou: sarsman的洪逸版跟csee.umbc.edu對照後,在一次 09/29 12:34
outofyou: insertion中確實可能都發生2跟4。其中case3的旋轉2次 09/29 12:34
outofyou: 只會視為1次旋轉。他只保證新點的父或Uncle其中一個 09/29 12:35
outofyou: 必為黑。 09/29 12:35
FRAXIS: 那就看你怎麼解讀2和4的分界了 09/29 20:05
FRAXIS: 如果新點的父或Uncle其中一個為黑 而且知道要插入了 09/29 20:06
FRAXIS: 可以先插入然後直接旋轉 step 2 和 step 4 同時發生 09/29 20:08
FRAXIS: 我也可以先轉再插 就沒有 step 4 了.. 09/29 20:08
lovepipi: 我想請問這個在第幾頁 09/29 23:14