Go实现如下
func zigzagLevelOrder( root *TreeNode ) [][]int {
// write code here
if root == nil {
return make([][]int, 0, 0)
}
var queue = make([]TreeNode, 0, 0)
var result = make([][]int , 0, 0)
queue = append(queue, *root)
leftToRight := true
for len(queue) != 0 {
length := len(queue)
levelResult := make([]int, 0, 0)
for i:= length - 1 ; i >= 0; i-- {
node := queue[i]
levelResult = append(levelResult, node.Val)
if(leftToRight) {
if node.Left != nil {
queue = append(queue, *node.Left)
}
if node.Right != nil {
queue = append(queue, *node.Right)
}
} else {
if node.Right != nil {
queue = append(queue, *node.Right)
}
if node.Left != nil {
queue = append(queue, *node.Left)
}
}
}
leftToRight = !leftToRight
queue = queue[length:]
result = append(result, levelResult)
}
return result
}


京公网安备 11010502036488号