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

闪念标签:LC

题目链接:https://leetcode.cn/problems/maximum-difference-between-node-and-ancestor/description/