102. 二叉树的层序遍历

https://leetcode.cn/problems/binary-tree-level-order-traversal/

给你二叉树的根节点 root ,返回其节点值的 层序遍历 。 (即逐层地,从左到右访问所有节点)。

示例 1:

输入:root = [3,9,20,null,null,15,7]
输出:[[3],[9,20],[15,7]]

示例 2:

输入:root = [1]
输出:[[1]] 

示例 3:

输入:root = []
输出:[]

提示:

  • 树中节点数目在范围 [0, 2000] 内
  • -1000 <= Node.val <= 1000

代码

type TreeNode struct {
    Val int
    Left *TreeNode
    Right *TreeNode
}
func levelOrder(root *TreeNode) [][]int {
    var res [][]int
    if root == nil {
        return res
    }
    var queue []*TreeNode
    queue = append(queue, root)
    var idx int
    for len(queue) > 0 {
        res = append(res, []int{})
        var layer []*TreeNode
        for j := 0; j < len(queue); j++ {
            node := queue[j]
            res[idx] = append(res[idx], node.Val)
            if node.Left != nil {
                layer = append(layer, node.Left)
            }
            if node.Right != nil {
                layer = append(layer, node.Right)
            }
        }

        queue = layer
        idx++
    }
    return res
}