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 }