102. Binary Tree Level Order Traversal

Medium

Given the root of a binary tree, return the level order traversal of its nodes' values. (i.e., from left to right, level by level).

Example 1:

Input: root = [3,9,20,null,null,15,7]
Output:
 [[3],[9,20],[15,7]]

Example 2:

Input: root = [1]
Output:
 [[1]]

Example 3:

Input: root = []
Output:
 []

Constraints:

  • The number of nodes in the tree is in the range [0, 2000].

  • -1000 <= Node.val <= 1000

解題

/**
 * Definition for a binary tree node.
 * type TreeNode struct {
 *     Val int
 *     Left *TreeNode
 *     Right *TreeNode
 * }
 */
func levelOrder(root *TreeNode) [][]int {
    res := make([][]int, 0)

    var helper func(*TreeNode, int)
    helper = func(root *TreeNode, level int) {
        if root == nil {
            return 
        }

        if level > len(res) {
            res = append(res, []int{root.Val})
        } else {
            res[level - 1] = append(res[level - 1], root.Val)
        }

        helper(root.Left, level + 1)
        helper(root.Right, level + 1)
    }

    helper(root, 1)

    return res
}

Last updated