当前位置: 首页 > 知识库问答 >
问题:

二叉树中最大距离处的两个节点

梅飞宇
2023-03-14

我被这个问题的修改版本困住了(在二叉树中找到距离为k的两个节点)。

我试图定义两个节点之间的距离,我认为这是沿着树状分支从节点n1移动到节点n2所需的最小节点数。

从这个假设出发,我得到了一个情况,我认为我需要知道每个节点是在根的左边还是右边。

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

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

现在,问题是,我最终对每对节点都直截了当地这样做。我可以优化它不检查一对,如果我知道一对节点的距离比这更远,但如何?

请建议解决方案的其余部分。

共有1个答案

段兴为
2023-03-14

与二叉树的直径相同(见自下而上方法),二叉树的直径定义为树中两片叶子之间最长路径上的节点数。在您的情况下,您还必须找到节点。

 类似资料:
  • 我试图找到树中两个节点之间的最大距离。这是我的程序: 程序似乎正在运行;但是没有为一些测试用例显示正确的输出。我采取的方法是: 求根节点的子节点数(我一直认为根节点为0)。 找到每个子树的最大深度(尽可能多的子树,因为有根节点的子节点)。 将每个子树的最大深度存储在中,对其进行排序并打印最后两个值的总和。 有人能指出我程序中的错误吗?

  • 我读了一个算法来寻找二叉树中两个节点之间的距离。 这段代码在二叉树中找到(从根到给定节点的1个距离)。 我不明白的是,“x”有两个值,一个来自左子树,另一个来自右子树,它如何知道返回哪个值 例如,如果树类似于: 然后调用, 那么,在语句“”中,它如何返回正确的x值?

  • 本文向大家介绍二叉树任意两个节点之间路径的最大长度?相关面试题,主要包含被问及二叉树任意两个节点之间路径的最大长度?时的应答技巧和注意事项,需要的朋友参考一下 考察点:树    

  • 二叉搜索树(BST)中节点的深度与其与根的距离相同吗?我想是的,但我不确定。我相信距离是树的一般概念,深度是应用于BST的概念。

  • 我正在研究合并两个二叉树的问题(https://www.geeksforgeeks.org/merge-two-binary-trees-node-sum/)我很难理解一些递归。为什么要将递归语句设置为和?当你这样做的时候,是否等于两个值? 我只是不确定为什么我们要将递归语句设置为t1.leftt1.right'

  • 给定一棵二叉树:高度为3的二叉树 我想找出同一水平上两个节点之间的水平距离,也计算不在中间的节点,而不计算节点本身,比如在 节点a和d之间的水平距离为2。 编辑: 请参见,a到d之间的距离是在同一级别上计算的,不包括a或d的父节点或子节点,但只包括同一级别上缺少的节点。所以a到d之间的距离是