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

如何找到二叉树中任意两个节点之间的最大差异

裴金鑫
2023-03-14

有谁能帮助我理解下面的算法,如何找出二叉树中任意两个节点之间的最大差异。

http://www.geeksforgeeks.org/maximum-difference-between-node-and-its-ancestor-in-binary-tree/

我不明白为什么他们试图从左子树和右子树得到最小值,而实际上我们想要最大的差异

提前谢谢!!

共有2个答案

周墨一
2023-03-14

和往常一样,有几种方法可以实现这一点,而你的方法可能和Geeksforgeks提出的方法一样有效,尽管对我来说这似乎更难实现。

当前节点和任何其他节点之间的最大差异是通过将当前子树的最小值从当前值减去来获得的。这就是为什么他们要取右子树和左子树的最小值。到目前为止的最大差异包含在ref指针中,如果需要,它会更新。

满玉泽
2023-03-14

为了找到最大的差异,从最小值中减去最大值就足够了。您提供的链接描述了一个不同问题的算法:找到最大差异|A-B|,其中AB的祖先。

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

  • 我被这个问题的修改版本困住了(在二叉树中找到距离为k的两个节点)。 我试图定义两个节点之间的距离,我认为这是沿着树状分支从节点n1移动到节点n2所需的最小节点数。 从这个假设出发,我得到了一个情况,我认为我需要知道每个节点是在根的左边还是右边。 案例1:如果n1和n2位于不同的一侧,那么我爬到根部(距离等于节点n1的深度-假设n1位于左侧),然后向下跑到右侧节点n2(距离等于节点n2的深度)。所以

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

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

  • 我有一个任务,给我一个随机生成的BST的根。我得到了随机生成的测试用例。 分配说明如下: 您将得到二叉搜索树的根节点T和两个整数:min和max。确定存储在T中大于或等于min且小于或等于max的所有键的总和。递归地实现算法 我不允许使用全局变量或创建辅助函数 我当前的代码是: 我的问题是,如果在递归过程中的任何时候,节点都会触发基本情况,并导致我的函数无法正确完成。我相信我的命令可能是罪魁祸首。

  • 我试图通过在MST中添加新顶点来更新MST。为此,我一直在关注Chin和Houck的“更新生成树”。http://www.computingscience.nl/docs/vakken/al/WerkC/UpdatingSpanningTrees.pdf 论文中的一个步骤要求我在两个给定顶点之间的路径中找到最大的边。我的想法是找到顶点之间所有可能的路径,然后从这些路径中找到最大的边。我一直在尝试在