【问题标题】:Two nodes at the maximum distance in a binary tree二叉树中距离最大的两个节点
【发布时间】:2012-06-06 16:30:37
【问题描述】:

我遇到了问题的修改版本(在二叉树中查找位于距离 k 处的两个节点)。

我试图定义两个节点之间的距离,我相信它是沿着树枝从节点 n1 移动到节点 n2 所需的最小节点数。

继续这个假设,我认为我需要知道每个节点是在根的左侧还是右侧。

案例 1:如果 n1 和 n2 在不同的一侧,那么我爬到根部(距离等于节点 n1 的深度 - 假设 n1 在左侧)然后我跑到右侧节点 n2(距离等于n2) 的深度。所以两个节点 n1 , n2 之间的最大距离是它们在根的不同侧的深度之和。

案例 2:如果 n1 和 n2 在同一侧,我会在树层次结构中找到两个共同的祖先,并重复相同的过程,将祖先视为根,就像我在案例 1 中所做的那样。 最小距离将是它们与根的深度之和 - 共同祖先深度的 2 倍。

现在,问题在于,我最终坦率地为每一对节点都这样做。如果我知道一对节点的距离超过这个,我可以优化它以不检查一对节点,但是如何?

请提出其他解决方案。

【问题讨论】:

标签: binary-tree


【解决方案1】:

Diameter of a Binary Tree 相同的问题(参见自下而上的方法)定义为树中两个叶子之间最长路径上的节点数。在您的情况下,您还必须找出节点。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多