2014-09-26 33 views
0

我想從下面的2-3-4樹中刪除15。我想只是簡單地把17號搬上去,但我不知道這是否正確,因爲它必須完整。刪除2-3-4樹中的內部節點

刪除15從下面的樹: enter image description here

的2-3-4樹怎麼會像刪除後?我認爲在這種情況下簡單地向上移動17是不正確的。但我不太確定。

回答

0

你有樹不是有效的2-3-4樹,因爲它有一個重複6

要刪除從2-3-4樹的內部valuee,您只需更換價值與它的下一個被刪除最大的項目,它的順序是17,這就減少了從葉節點刪除值的刪除和刪除問題。所以問題是,你如何刪除葉節點值?

當您從2 3 4樹的樹葉中刪除時,只需刪除該項目(如果它是3節點或4節點的)。如果它是2節點,則會使節點爲空。這被稱爲下溢。要解決此問題,您必須將遇到的所有2節點轉換爲3節點或4節點。有三種情況需要處理,具體取決於是否有鄰接的兄弟節點是3-節點或4-節點,或者它們是否都是2-節點。這在下面的鏈接中解釋。

對於從2-3-4樹上缺失的討論,見幻燈片51至53:

http://www.serc.iisc.ernet.in/~viren/Courses/2009/SE286/2-3Trees-Mod.ppt

2 3 4缺失(和插入)在也被解釋和說明:

用於實現2-3-4樹源代碼(在C++ 11)見:

http://cplusplus.kurttest.com/notes/tree234.html