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

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
Deepth-first Search
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);
}
}
};