34 lines
593 B
Go
34 lines
593 B
Go
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
|