Skip to main content

1372. Longest ZigZag Path in a Binary Tree

Python

DFS

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

def dfs(node, pre_direction, total):
if not node:
return total

# If pre_direction is '', both sub-dfs will use 1 as 3rd arg
return max(
dfs(node.left, 'left', total+1 if pre_direction == 'right' else 1),
dfs(node.right, 'right', total+1 if pre_direction == 'left' else 1)
)
return dfs(root, '', 0) - 1