上虞建设局网站,wap是什么意思歌词,哪个网站的织梦源码好,找人做网站需要多少钱目录链接#xff1a;
力扣编程题-解法汇总_分享记录-CSDN博客 GitHub同步刷题项目#xff1a;
https://github.com/September26/java-algorithms 原题链接#xff1a;力扣 描述#xff1a;
给定二叉树的根节点 root#xff0c;找出存在于 不同 节点 A 和 B 之间的最大值…目录链接
力扣编程题-解法汇总_分享记录-CSDN博客 GitHub同步刷题项目
https://github.com/September26/java-algorithms 原题链接力扣 描述
给定二叉树的根节点 root找出存在于 不同 节点 A 和 B 之间的最大值 V其中 V |A.val - B.val|且 A 是 B 的祖先。
如果 A 的任何子节点之一为 B或者 A 的任何子节点是 B 的祖先那么我们认为 A 是 B 的祖先 示例 1 输入root [8,3,10,1,6,null,14,null,null,4,7,13]
输出7
解释
我们有大量的节点与其祖先的差值其中一些如下
|8 - 3| 5
|3 - 7| 4
|8 - 1| 7
|10 - 13| 3
在所有可能的差值中最大值 7 由 |8 - 1| 7 得出。示例 2 输入root [1,null,2,null,0,3]
输出3提示
树中的节点数在 2 到 5000 之间。0 Node.val 105解题思路
* 解题思路
* 动态规划的思路每次计算时传入之前的最大最小值和当前值计算差值。
* 然后更新最大最小值继续遍历其左右节点。 代码
public class Solution1026 {int maxAbs 0;public int maxAncestorDiff(TreeNode root) {search(root.left, root.val, root.val);search(root.right, root.val, root.val);return maxAbs;}private void search(TreeNode root, int max, int min) {if (root null) {return;}int abs Math.max(Math.abs(max - root.val), Math.abs(min - root.val));maxAbs Math.max(abs, maxAbs);max Math.max(root.val, max);min Math.min(root.val, min);search(root.left, max, min);search(root.right, max, min);}
}