题解 | #按之字形顺序打印二叉树#
按之字形顺序打印二叉树
http://www.nowcoder.com/practice/91b69814117f4e8097390d107d2efbe0
package main
import . "nc_tools"
func Print( pRoot *TreeNode ) [][]int {
// write code here
if pRoot == nil {
return [][]int{}
}
queue := []*TreeNode{pRoot}
levels := [][]int{}
for len(queue) > 0 {
n := len(queue)
level := []int{}
for i := 0; i < n; i++ {
pRoot = queue[0]
queue = queue[1:]
level = append(level, pRoot.Val)
if pRoot.Left != nil {
queue = append(queue, pRoot.Left)
}
if pRoot.Right != nil {
queue = append(queue, pRoot.Right)
}
}
k1 := len(level) //这里注意,内层【】,翻转的都是这里面的
k2 := len(levels) //这里也要注意,外层【】,只有判断奇偶的时候用
if k2 % 2 == 1 {
for i := 0; i < k1/2; i++ {
level[i], level[k1-1-i] = level[k1-1-i], level[i]
}
}
levels = append(levels, level)
}
return levels
}

查看18道真题和解析