日野弥生:勉強しよう

LeetCode 1372 - 二叉树中的最长交错路径

发表于2025年04月24日

#树 #二叉树 #深度优先搜索 #动态规划

深度优先搜索,注意方向的切换。

class Solution:
    def longestZigZag(self, root: Optional[TreeNode]) -> int:
        self.maxZag = 0

        def dfs(node: Optional[TreeNode], isLeft: bool, length: int):
            if not node:
                return
            self.maxZag = max(self.maxZag, length)
            if isLeft:
                dfs(node.left, True, 1)         # 同方向重置
                dfs(node.right, False, length + 1)  # 换方向,+1
            else:
                dfs(node.right, False, 1)        # 同方向重置
                dfs(node.left, True, length + 1)   # 换方向,+1

        dfs(root.left, True, 1)
        dfs(root.right, False, 1)
        return self.maxZag

            

フラッシュタブ:LeetCode

题目链接:https://leetcode.cn/problems/longest-zigzag-path-in-a-binary-tree/

上一篇

LeetCode 1448 - 统计二叉树中好节点的数目

下一篇

LeetCode 744 - 寻找比目标字母大的最小字母