簡體   English   中英

刪除2-3-4樹中的內部節點

[英]Deletion of an internal node in 2-3-4 tree

我想從以下2-3-4樹中刪除15。 我曾想過將17向上移動,但是我不知道那是否正確,因為它必須完整。

從以下樹中刪除15: 在此處輸入圖片說明

刪除后2-3-4樹的外觀如何? 我認為在這種情況下,簡單地向上移動17是不正確的。 但是我不太確定。

您擁有的樹不是有效的2 3 4樹,因為它有重復的6。

要從2 3 4樹中刪除內部值,只需將要刪除的值替換為其下一個最大項,即其順序后繼項,即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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM