# 1026. Maximum Difference Between Node and Ancestor

Given the `root` of a binary tree, find the maximum value `V` for which there exist different nodes `A` and `B` where `V = |A.val - B.val|` and `A` is an ancestor of `B`.

A node `A` is an ancestor of `B` if either: any child of `A` is equal to `B`, or any child of `A` is an ancestor of `B`.

Example 1:

``````Input: root = [8,3,10,1,6,null,14,null,null,4,7,13]
Output: 7
Explanation: We have various ancestor-node differences, some of which are given below :
|8 - 3| = 5
|3 - 7| = 4
|8 - 1| = 7
|10 - 13| = 3
Among all possible differences, the maximum value of 7 is obtained by |8 - 1| = 7.
``````

Example 2:

``````Input: root = [1,null,2,null,0,3]
Output: 3
``````

Constraints:

• The number of nodes in the tree is in the range `[2, 5000]`.
• `0 <= Node.val <= 105`

``````class Solution {
public:
int maxAncestorDiff(TreeNode* root) {
int res = 0;
helper(root, root->val, root->val, res);
return res;
}
void helper(TreeNode* node, int mn, int mx, int& res) {
if (!node) return;
res = max(res, abs(node->val - mn));
res = max(res, abs(mx - node->val));
mn = min(mn, node->val);
mx = max(mx, node->val);
helper(node->left, mn, mx, res);
helper(node->right, mn, mx, res);
}
};
``````

``````class Solution {
public:
int maxAncestorDiff(TreeNode* root) {
return helper(root, root->val, root->val);
}
int helper(TreeNode* node, int mn, int mx) {
if (!node) return mx - mn;
mn = min(mn, node->val);
mx = max(mx, node->val);
return max(helper(node->left, mn, mx), helper(node->right, mn, mx));
}
};
``````

Github 同步地址:

https://github.com/grandyang/leetcode/issues/1026

https://leetcode.com/problems/maximum-difference-between-node-and-ancestor/

https://leetcode.com/problems/maximum-difference-between-node-and-ancestor/discuss/274654/PythonJava-Recursion

https://leetcode.com/problems/maximum-difference-between-node-and-ancestor/discuss/274610/JavaC%2B%2BPython-Top-Down

LeetCode All in One 题目讲解汇总(持续更新中…)

 微信打赏 Venmo 打赏
（欢迎加入博主的知识星球，博主将及时答疑解惑，并分享刷题经验与总结，试运营期间前五十位可享受半价优惠～）

×

Help us with donation