剑指 Offer 32 - II. 从上到下打印二叉树 II
/**
* Definition for a binary tree node.
* type TreeNode struct {
* Val int
* Left *TreeNode
* Right *TreeNode
* }
*/
func levelOrder(root *TreeNode) [][]int {
//例外条件
if root == nil{
return nil
}
//新建一个队列
queue := []*TreeNode{root}
var res [][]int
i := 0
for len(queue)>0{
//新建临时队列,用于重新给queue赋值
temp := []*TreeNode{}
//新建每一行的一维数组
row_res := []int{}
for _,v := range queue{
//判断,否则v为nil会导致构建row_res时空指针
if v != nil{
row_res = append(row_res,v.Val)
//判断,将左右节点加入队列中
if v.Left != nil{
temp = append(temp,v.Left)
}
if v.Right != nil{
temp = append(temp,v.Right)
}
}
}
res = append(res,row_res)
i++
//二叉树新的一行的节点放入队列中
queue = temp
}
return res
}