1026. Maximum Difference Between Node and Ancestor Solution 1 (time O(n), space O(1)) # Definition for a binary tree node. # class TreeNode(object): # def __init__(self, val=0, left=None, right=None): # self.val = val # self.left = left # self.right = right class Solution(object): def maxAncestorDiff(self, root): """ :type root: TreeNode :rtype: int """ def dfs(root, min_val, max_val): if root is None: return 0 self.ans = max(self.ans, abs(min_val - root.val), abs(max_val - root.val)) min_val = min(min_val, root.val) max_val = max(max_val, root.val) dfs(root.left, min_val, max_val) dfs(root.right, min_val, max_val) self.ans = 0 dfs(root, root.val, root.val) return self.ans