剑指 Offer 32 - III. 从上到下打印二叉树 III
和力扣 103. 二叉树的锯齿形层序遍历一致
//2,bfs常规解
func levelOrder(root *TreeNode) [][]int {
if root == nil {
return nil
}
levels := [][]int{}
queue := []*TreeNode{root}
for len(queue) > 0 {
n := len(queue)
level_tmp := []int{}
for i := 0; i < n; i++ {
root = queue[0]
queue = queue[1 :]
level_tmp = append(level_tmp, root.Val)
if root.Left != nil {
queue = append(queue, root.Left)
}
if root.Right != nil {
queue = append(queue, root.Right)
}
}
k := len(level_tmp)
if len(levels) % 2 == 1 { //说明levels是层数【】外数组,level是内数组【】
for i := 0; i < k / 2; i++ {
level_tmp[i], level_tmp[k - 1 - i] = level_tmp[k - 1 - i], level_tmp[i]
}
}
levels = append(levels, level_tmp)
}
return levels
}