package q1372 type TreeNode struct { Val int Left *TreeNode Right *TreeNode } func zigZagLen(node *TreeNode, isLeft bool, curLen int) int { if node == nil { return 0 } var l, r int if isLeft { l = zigZagLen(node.Left, true, 1) r = zigZagLen(node.Right, false, curLen+1) } else { l = zigZagLen(node.Left, true, curLen+1) r = zigZagLen(node.Right, false, 1) } return max(curLen, l, r) } func longestZigZag(root *TreeNode) int { if root == nil { return 0 } return max( zigZagLen(root.Left, true, 1), zigZagLen(root.Right, false, 1), ) } var _ = longestZigZag