【问题标题】:What is the name of this tree?这棵树叫什么名字?
【发布时间】:2011-01-28 12:39:20
【问题描述】:

我正在搜索这棵简单树的名称,它是二叉搜索树的一个非常简单的概括。

这是描述。树的每个节点都有固定数量的最大键 MI 和最小数量的键,只有 1。键是有序的。每个节点都有指向子节点的 MI+1 外部链接,或多或少类似于 b 树。子节点只包含父节点的两个近键区间内的键,同样,就像 b 树一样。

不同之处在于插入和删除的工作方式。

插入:

我们从根开始。

如果我们正在检查的节点中有空间,因为它没有 MI 键,所以它不是满的,我们在正确的位置添加我们的键。

如果节点已满,我们将签入子节点。如果这个范围没有孩子,我们只用我们的钥匙创建一个。以此类推。

删除:

在删除时,如果我在一个节点中有例如“A C E”,我需要删除“E”,但是在“C”和“E”之间的间隔中有一个孩子,我得到了最大的元素子元素并将其替换为“E”(我可能需要在这里递归,因为删除元素可能需要将另一个元素从子元素移动到父元素)。它比这要复杂一些,但通常需要将元素从子节点移动到拥有已删除键的节点。

我知道这是非常不正式的规定,但我无法找到似乎是二叉树的简单概括的名称。

【问题讨论】:

  • 你说一个节点可以有 MI 键,但是你在插入时提到了“孩子”。请说明如何选择孩子作为其关键信息。
  • @margoc:我想我提到过,如果当前节点已满,我们将转到由我们已有的两个键分隔的范围内链接的子节点。因此,如果 MI 为 4,并且我在根节点“A C M Z”中,并且必须添加“E”,则我创建尝试转到 A-C 范围内链接的子节点。如果没有,我创建它。

标签: algorithm data-structures tree


【解决方案1】:

我认为您的算法适用于非自平衡“多路树”。看here

因此,B 树是一种自平衡变体。术语并不完全一致。维基百科使用相同名称的意义不同(相当于多进制),但我在足够多的地方看到了上述解释。

【讨论】:

  • 谢谢,我认为这完美地回答了我的问题!
【解决方案2】:

也许是k-ary tree

【讨论】:

  • 肯定是K-ary树,但我认为这是一个通用术语,问题是理解我描述的插入/删除算法是否被视为特殊树。
猜你喜欢
  • 1970-01-01
  • 2020-06-21
  • 2018-11-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-22
相关资源
最近更新 更多