lc-go/solutions/13/q1372/solution.go

35 lines
704 B
Go

// Package q1372 implements a solution for https://leetcode.com/problems/longest-zigzag-path-in-a-binary-tree/
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