[理工] 2-3 Tree以及2-3-4 Tree的Insertion

作者: jojoboy0115 (jojo)   2019-01-27 14:20:03
先提出疑問
1.請問2-3或者2-3-4 Overflow 是怎麼判斷?
(A)在插入後,檢查是否Overflow,才Split
(B)在插入前,就把所經過的 Node 都先Split(後面有例子)
有點像是紅黑樹若經過有兩個紅子點,要先 Color change
2.要往父點拉的值是怎麼選擇?
(C)在插入對應的順序後,才開始找
假設2-3-4 Tree現在有{13,14,15},Insert(12)後,{12,13,14,15}overflow,
選擇{13}上去父點,{12}、{14,15}當子點
(D)在插入前,先Split,選{14}上去當父點,{12,13}、{15} 當子點
3.2-3 Tree 跟 2-3-4 Tree 的Insertion 本來就不一樣嗎?
直接來看題目,這題2-3 Tree是用(A)+(C)
看前三個數字 10 9 8就好
當8插入後,發現Overflow,選擇第二個值 9 往上拉
https://i.imgur.com/RJYDiuW.jpg
https://i.imgur.com/Pw0JUJH.jpg
再來是這題2-3-4 Tree
106台大電機丙的資料結構
要採用(B)+(D)才有答案...
https://i.imgur.com/CHseQQu.jpg
http://i.imgur.com/70KGZUq.jpg
轉自yorunohoshi大大的圖片
在插入12之前,就先Split了,就是我上面的例子
可以看這篇文章下面的討論
https://www.ptt.cc/bbs/Grad-ProbAsk/M.1486893104.A.3B6.html
還是...這些問題都不存在? 我哪邊又想錯惹@@
請各位大大開導一下...
作者: aeiou335 (tbrdet)   2019-01-27 16:52:00
3. 看維基百科 兩個做法不一樣吧
作者: Voicer (MaxIce)   2019-01-27 17:38:00
1.2-3 A/2-3-4 B2.D234屬於最後再做插入,23屬於先插入
作者: alen0303 (艾倫零參 智商負三)   2019-01-27 19:11:00
採(A)+(C)法可以選出BD為答案答案有確定是AB還是BD嗎?啊 題目要求用top-down insert 那應該是AB沒錯了
作者: ming173899   2019-01-27 20:28:00
2-3-4treeBottom-up是先插入後在splitTop-down好像是搜索路徑上等於四就會先split不過我也不知道2-3 tree Bottom-up和Top-down的差別
作者: ekids1234 (∵:☆星痕╭☆)   2019-01-27 22:47:00
真的有先插在split作法嗎QQ 這樣會不懂四個誰該上去..
作者: jojoboy0115 (jojo)   2019-01-27 23:06:00
因為2-3 是用先插入再Split,所以我一開始做2-3-4也是用同樣的方法,卻沒有答案,爬文後才知道有其他做法@@
作者: eatagary (gary)   2019-01-28 00:17:00
台大 2-3樹 那題 題目有問題,用top-down會畫不出來,市面解答都是用 bottom up解法,解這題。
作者: ko330 (ko330)   2019-01-28 17:38:00
2 3 tree是不是沒有top-down阿都找不到資料..

Links booklink

Contact Us: admin [ a t ] ucptt.com