1026. 节点与其祖先之间的最大差值

给定二叉树的根节点 root,找出存在于 不同 节点 A 和 B 之间的最大值 V,其中 V = |A.val - B.val|,且 A 是 B 的祖先。

(如果 A 的任何子节点之一为 B,或者 A 的任何子节点是 B 的祖先,那么我们认为 A 是 B 的祖先)

链接

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
31
32
33
34
35
36
/**
* Definition for a binary tree node.
* class TreeNode {
* val: number
* left: TreeNode | null
* right: TreeNode | null
* constructor(val?: number, left?: TreeNode | null, right?: TreeNode | null) {
* this.val = (val===undefined ? 0 : val)
* this.left = (left===undefined ? null : left)
* this.right = (right===undefined ? null : right)
* }
* }
*/

function maxAncestorDiff(root: TreeNode | null): number {
if (root === null) return 0
function dfs(node: TreeNode | null, max: number, min: number) {
if (node === null) return 0
if (node.val > max) max = node.val
else if (node.val < min) min = node.val

if (node.left === null && node.right === null) {
return max - min
}

const l = dfs(node.left, max, min)
const r = dfs(node.right, max, min)

return Math.max(l, r)
}


const l = dfs(root.left, root.val, root.val)
const r = dfs(root.right, root.val, root.val)
return Math.max(l, r)
};