题目描述
思想
从上向下深度遍历,记录下当前路径中的最大值和最小值,并使用当前节点的值与最大值和最小值相减得到差值,与result进行比较,差值较大的更新到result。
代码实现
class Solution {
int res = 0;
public int maxAncestorDiff(TreeNode root) {
dfs(root, root.val,root.val);
return res;
}
public void dfs(TreeNode root, int max, int min){
if(root == null){
return;
}
max = Math.max(root.val,max);
min = Math.min(root.val,min);
res = Math.max(res, Math.max(Math.abs(root.val-max), Math.abs(root.val-min)));
// System.out.println(res);
dfs(root.left, max, min);
dfs(root.right, max, min);
}
}