Data structures 插入2-3树的正确方法是什么?

Data structures 插入2-3树的正确方法是什么?,data-structures,tree,2-3-tree,Data Structures,Tree,2 3 Tree,我的班主任给了我一个问题,让我在2-3棵树上进行插入 我所做的是上面的方法。他想要的是下面的方法。你能告诉我哪种方法是正确的吗?我在网上看到了,我在那里看到了这两种方法。但我还是不知道为什么我丢了10分!提前感谢您的帮助。让我先说2-3树有很多不同的版本,所以可能会让人困惑。实际上,它们只是在存储值的方式上有所不同。有些仅在叶中存储值,而其他则在每个节点中存储值 我相信你的老师使用的是后一种2-3棵树的定义。因此,树的问题是“根”节点与其子节点具有相同的值,一个节点永远不会与其子节点共享相同的

我的班主任给了我一个问题,让我在2-3棵树上进行插入


我所做的是上面的方法。他想要的是下面的方法。你能告诉我哪种方法是正确的吗?我在网上看到了,我在那里看到了这两种方法。但我还是不知道为什么我丢了10分!提前感谢您的帮助。

让我先说2-3树有很多不同的版本,所以可能会让人困惑。实际上,它们只是在存储值的方式上有所不同。有些仅在叶中存储值,而其他则在每个节点中存储值

我相信你的老师使用的是后一种2-3棵树的定义。因此,树的问题是“根”节点与其子节点具有相同的值,一个节点永远不会与其子节点共享相同的值。尽管如此,我认为你们老师提供的也不是真正的2-3树。当节点包含3个值时,2-3树将拆分。我希望以下是正确的输出:

将4添加到树中:

(4)
将7添加到树中:

(4,7)
将6添加到树中:

(4,6,7)
*splits*
  (6)
(4) (7)
一旦根节点得到3个值,它就会分裂成1-2树

如果要插入8:

  (6)
(4) (7,8)
如果要插入9:

   (6)
 (4) (7,8,9)
 *push-up*
   (6,8)
(4) (7) (9)

当一个非根节点得到的3个值时;将中间值向上推到父节点,如果向上推该值使父节点有3个值,则父节点将拆分。

父节点是否将包含2个值:左子树上的最小值和中间子树上的最大值。一个父节点总是只有2个和3个节点,或者更少,或者更多?所以一起写
(7,8)
并不违背这个概念?糊涂了@关于你的第一个问题,这取决于2-3树的具体实现,这使得在不知道老师期望的情况下回答你的问题很难知道正确的答案。@Cruze如果你看这一页,它描述了我所解释的2-3树:但这描述了你所期望的2-3树:我的老师期望的和你回答的一样。我不知道在主要考试中写什么/@克鲁兹:我会尽量在回答中更好地描述规则。