leetcode-二叉树-二叉树层次遍历

55 阅读1分钟

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

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

第一种解法

/**
 * Definition for a binary tree node.
 * type TreeNode struct {
 *     Val int
 *     Left *TreeNode
 *     Right *TreeNode
 * }
 */
func levelOrder(root *TreeNode) [][]int {
    var res [][]int
    if root == nil {
        return res
    }
    q := []*TreeNode{root}
    for len(q) > 0 {
        var (
            n = len(q)
            vals []int
        )
      for i := 0; i < n; i++ {
          node := q[0]
          q = q[1:]
          vals = append(vals, node.Val)
          if node.Left != nil {
              q = append(q, node.Left)
          }

          if node.Right != nil {
              q = append(q, node.Right)
          }
      }
      res = append(res, vals)
    }
    return res
}