首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >删除2-3-4树中的内部节点

删除2-3-4树中的内部节点
EN

Stack Overflow用户
提问于 2014-09-26 11:46:15
回答 1查看 4.8K关注 0票数 1

我想从下面的2-3-4树中删除15。我想简单地把17向上移动,但我不知道这是否正确,因为它必须是完整的。

从下列树中删除15:

删除后的2-3-4树会是什么样子?我认为,在这种情况下,简单地上升17是不正确的。但我不太确定。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-09-26 16:11:08

您拥有的树不是有效的2-3 4树,因为它有一个重复的6。

若要从2 34树中删除内部值,只需将要删除的值替换为它的下一个最大项,即它的顺序后继项( 17 )。这将删除的问题减少到从叶节点中删除值。因此,问题是,如何删除叶节点值?

当您从树的叶中删除时,如果是3节点或4节点,您只需删除该项。如果它是一个2节点,则该节点将为空。这就是所谓的底流。要解决此问题,必须将遇到的所有2节点转换为3节点或4节点.有三种情况您必须处理,取决于是否有一个相邻的兄弟姐妹是一个3节点或4节点,或它们是否都是2节点。这将在下面的链接中解释。

关于从树中删除的讨论,请参见幻灯片51至53:

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

[2]4删除(和插入)也作了解释并举例说明如下:

  • http://www.cs.toronto.edu/~krueger/cscB63h/lectures/tut04.txt
  • http://www.cs.ubc.ca/~liorma/cpsc320/files/B-trees.pdf

有关实现2 3 4树的源代码(在C++11中),请参见:

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26058806

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档