1026. Maximum Difference Between Node and Ancestor

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
class Solution {
private static class Result {
private int maxDiff;
}

public int maxAncestorDiff(TreeNode root) {
Result result = new Result();
dfs(result, root, null, null);
return result.maxDiff;
}

private void dfs(Result result, TreeNode node, Integer min, Integer max) {
if (node == null) {
return;
}

if (min != null) {
result.maxDiff = Math.max(result.maxDiff, Math.abs(node.val - min));
}
if (max != null) {
result.maxDiff = Math.max(result.maxDiff, Math.abs(max - node.val));
}

min = min == null ? node.val : Math.min(min, node.val);
max = max == null ? node.val : Math.max(max, node.val);

dfs(result, node.left, min, max);
dfs(result, node.right, min, max);
}
}

References

1026. Maximum Difference Between Node and Ancestor