給一棵二叉樹,問書中某個子節點和它某個祖先節點的數值差最大多少
DFS,用l和r記錄從祖先節點搜到當前節點時遇到的最大和最小值,同時更新全局變量ans
1 #872
2 #Runtime: 59 ms
3 #Memory: 19.9 MB
4
5 # Definition for a binary tree node.
6 # class TreeNode(object):
7 # def __init__(self, val=0, left=None, right=None):
8 # self.val = val
9 # self.left = left
10 # self.right = right
11 class Solution(object):
12 def maxAncestorDiff(self, root):
13 """
14 :type root: TreeNode
15 :rtype: int
16 """
17 self.ans = 0
18 def DFS(root, l, r):
19 if not root:
20 return
21 l = min(root.val, l)
22 r = max(root.val, r)
23 self.ans = max(self.ans, r - l)
24 DFS(root.left, l, r)
25 DFS(root.right, l, r)
26 DFS(root, root.val, root.val)
27 return self.ans