日野弥生:勉強しよう
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