有人可以帮我理解下面的算法,了解如何找到二叉树中任意两个节点之间的最大差异。
http://www.geeksforgeeks.org/maximum-difference-between-node-and-its-ancestor-in-binary-tree/
我不明白为什么他们试图从左子树和右子树获得最小值,而实际上我们想要最大差异&不是最小的差异。所以,我们不应该从左和右递归地获得最大差异。正确的子树和&用它来计算我们的结果?
提前致谢!!
答案 0 :(得分:0)
要找到最大差异,只需从最小值中减去最大值即可。您提供的链接描述了针对其他问题的算法:查找最大差异|A-B|
,其中A
是B
的祖先。
答案 1 :(得分:0)
像往常一样,有几种方法可以执行此操作,而你的工作方式可能与geeksforgeeks提供的方法一样好,但对我来说似乎更难实现。
当前节点与任何其他节点之间的最大差异是通过从当前值中减去当前子树的最小值来获得的。这就是他们采用左右子树的最小值的原因。到目前为止的最大差异包含在ref指针中,如果需要,它会更新。