给你二叉树的根节点 root ,返回其节点值的 层序遍历 。 (即逐层地,从左到右访问所有节点)。
func levelOrder(root *TreeNode) [][]int {
res := [][]int{}
if root == nil {
return nil
}
queue := []*TreeNode{root}
for len(queue) > 0 {
length := len(queue) //必须先赋值再使用,否则len(queue)在迭代开始前计算,过程中不再发生改变导致结果错误
var ans []int
for i := 0; i < length; i++ {
temp := queue[0]
queue = queue[1:]
ans = append(ans, temp.Val)
if temp.Left != nil {
queue = append(queue, temp.Left)
}
if temp.Right != nil {
queue = append(queue, temp.Right)
}
}
res = append(res, ans)
}
return res
}