102. Binary Tree Level Order Traversal

1. Description

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).

2. Example

Example 1

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: []

3. Constraints

  • The number of nodes in the tree is in the range [0, 2000].
  • -1000 <= Node.val <= 1000

4. Solutions

n is the number of nodes in root
Time complexity: O(n)
Space complexity: O(logn->n)

class Solution {
public:
    vector<vector<int>> levelOrder(TreeNode *root) {
        vector<vector<int>> nodes;
        traverse(root, 0, nodes);

        return nodes;
    }

private:
    void traverse(TreeNode *root, int level, vector<vector<int>> &nodes) {
        if (root != nullptr) {
            if (nodes.size() == level) {
                nodes.emplace_back();
            }

            nodes[level].push_back(root->val);

            traverse(root->left, level + 1, nodes);
            traverse(root->right, level + 1, nodes);
        }
    }
};
comments powered by Disqus