[理工] 資料結構樹

作者: meokay (我可以)   2017-12-10 14:34:00
大家好,小弟想請問大家一些蠢問題
因為剛好在複習Tree這邊,而想到的一些問題
因為 2-3 Tree 和 2-3-4 Tree 都是 B Tree 的一種形式,分別為Order = 3 和 Order =
4。
那想請問以下
Q1 : 那也就是如果遇到題目是說B Tree 的 Order =3 就能夠把他當成是2-3 Tree 作解
題嗎? ( 而 Order = 4 就當成 2-3-4 Tree )
個人的想法是可以的,不知道我有沒有誤解其本義QQ..
Q2 : 在2-3 Tree 的 Spilt 中 當「插入時」超過 2 Keys 時,提出中間的 Remote 上去
,這
我可以理解。但是如果是2-3-4 Tree的Spilt 呢?
因為我在網路上看到兩種形式
1. 「插入前」先選擇三個裡面的中間Remote 後在插入 ( Princeton 的 PDF 中,插入L
時,他先將N給Remote往上後才插入L )
https://i.imgur.com/HmLWExF.jpg
2. 但是我在 usfca 的 Demo 網站上測試了,依序插入 10,50,70,40,當40「插入時」,
他是將他插入之後取 第二個 (4/2) 做Remote,但是如果這樣的話那上面的例子中插入L
時,不就應該要Remote M 嗎?( 因為先插入後 LMNP 取第二個是M )
https://i.imgur.com/xpvJuPP.jpg
小弟在這部分2-3-4 Spilt 這部分一直沒弄的很清楚,一直都是以 Case 1 先提出中間後
再插入來做題目。
想請教板上的大神們應該是那種方式才對呢?
如果我的理解有誤的話拜託請別吝嗇的糾正我,拜託了!
非常感激不盡! <(_ _)>
謝謝!
作者: TMDTMD2487 (ㄚ冰)   2017-12-10 15:39:00
你知道第一個的第一步插入E他怎麼插的嗎 教我XD如果我寫程式的話 我會把他插進去後判斷overflow有的話把floor(n/2)提上去 遞迴判斷父點有無overflow直到沒有overflow或是沒有父點 我的筆記也是這樣寫的我剛剛翻了一下程式看一下別人怎麼寫的m-ary 如果需要做split代表函插入的有m+1個點假設你這m+1個點存在array 0到m那(m-1)/2(取整數)為你split的點(就是要丟到上一層的所以被分成 { 0..[(M-1)/2]-1 } { [(M-1)/2]+1..M }抱歉我好像講錯了XD 需要做split代表有m個點才對但是split的點我沒有講錯還是取(M-1)/2的整數部分https://goo.gl/nvkMxr 給你參考這個0到M個點我們將 (M-1)/2 提上去 大概是這樣ㄟ其實我還是講錯了0到m-1 取(M-1)/2不這樣你第一張圖他的取法是跟這個不一樣的歐第一個是order 4 這樣要取3/2=1 也就是第二個是先把L插入進去後才取歐

Links booklink

Contact Us: admin [ a t ] ucptt.com