【问题标题】:Maximum Height 2-3 Tree最大高度 2-3 树
【发布时间】:2013-04-03 05:14:36
【问题描述】:

要找到一棵 2-3 树的最大高度,你能不能从根节点一直遍历到它的左子节点,一直向下直到遇到叶子?

这是事实:由于所有叶节点都在相同的高度,因此任何点的最低叶都是树的最大高度。 (所有叶节点都在同一级别上)。

如果你一直向左走,你总是到达底部吗?

【问题讨论】:

  • 这也取决于树的类型...
  • 怎么样?我提到了 2-3 树.. 你是什么意思?
  • 似乎我误解了你的问题。但是你说的那棵 2-3 树到底是什么意思
  • 那些坏男孩之一。插入方法有点棘手,所以除非您熟悉它..不确定您是否可以提供帮助...但我会很感激 :)

标签: java arrays tree traversal


【解决方案1】:

注意 2-3 棵树是平衡的,这意味着每个子树(左、中、右)将包含接近相同数量的数据 - 考虑到这个陈述,我们可以假设遍历到叶节点(在任何子树)将为您提供 2-3 树的高度。

由于树的平衡,我们也可以说所有的操作都倾向于O(lg n)

更新

2-3 树是空树(零节点)或单节点树(只有一个节点)或 具有以下属性的多节点树:

  1. 每个内部节点都有两个或三个子节点
  2. 从根到叶的每条路径都具有相同的长度。

来自 CS 部门,IISc:http://lcm.csa.iisc.ernet.in/dsa/node118.html

【讨论】:

  • 真实故事。为了获得树的高度,我猜你可以继续遍历每个节点的 left 子节点,直到你碰到一片叶子。那片叶子一定是树的高度。这行得通吗?
  • 是的,这会给你身高。
  • 我有点想知道是否存在左叶节点(在底部)不存在的情况。请查看我在上述评论中发布的图片(这是一个链接)以帮助可视化。
  • 所以你可以一直向左走,不是吗?
  • 是的,请注意第二个属性。 从根到叶的每条路径都具有相同的长度 - 所以一直向左走就可以了。你总是会碰到叶子——如果不是,它就不是一棵正确形成的 2-3 树。
猜你喜欢
  • 2011-02-18
  • 2011-05-02
  • 2021-09-07
  • 2022-11-15
  • 2019-07-18
  • 2018-02-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多