JZX轻语:简
LeetCode每日一题(20240405) - 节点与其祖先之间的最大差值
发表于2024年04月05日
可以使用层次遍历 + 维护根节点至当前节点路径的最大/最小值,然后每次遍历的时候都更新下最优解(选用 当前最优解 or 当前路径的最大值 - 最小值)。
# Definition for a binary tree node.
# class TreeNode:
# def __init__(self, val=0, left=None, right=None):
# self.val = val
# self.left = left
# self.right = right
from collections import deque
class Solution:
def maxAncestorDiff(self, root: Optional[TreeNode]) -> int:
result = 0
q = deque()
q.append((root, root.val, root.val)) # max, min
while q:
node, max_val, min_val = q.popleft()
result = max(max_val - min_val, result)
if node.left:
lc = node.left
q.append((lc, max(lc.val, max_val), min(lc.val, min_val)))
if node.right:
rc = node.right
q.append((rc, max(rc.val, max_val), min(rc.val, min_val)))
return result