Back to Problem
Official 1693 views

Editorial: Binary Tree Level Order Traversal

by admin ·

23

1 Intuition

BFS naturally processes nodes level by level using a queue. Add nodes to queue, process each level, and collect results. This gives us the level-order traversal.

2 Approach

1. Initialize queue with root node 2. Initialize result list 3. While queue not empty: - Get current level size - Process all nodes at current level - Add level's values to result - Add their children to queue for next level 4. Return result

3 Complexity Analysis

**Time Complexity:** O(n) - visit each node once **Space Complexity:** O(w) - w is max width of tree Max queue size is the widest level of tree.

4 Solution Code

from collections import deque
def levelOrder(root):
    if not root:
        return []
    result = []
    queue = deque([root])
    while queue:
        level_size = len(queue)
        level = []
        for _ in range(level_size):
            node = queue.popleft()
            level.append(node.val)
            if node.left:
                queue.append(node.left)
            if node.right:
                queue.append(node.right)
        result.append(level)
    return result
vector<vector<int>> levelOrder(TreeNode* root) {
    if (!root) return {};
    vector<vector<int>> result;
    queue<TreeNode*> q;
    q.push(root);
    while (!q.empty()) {
        int level_size = q.size();
        vector<int> level;
        for (int i = 0; i < level_size; i++) {
            TreeNode* node = q.front();
            q.pop();
            level.push_back(node->val);
            if (node->left) q.push(node->left);
            if (node->right) q.push(node->right);
        }
        result.push_back(level);
    }
    return result;
}

5 Code Walkthrough

For root = [3,9,20,null,null,15,7]: - Queue: [3], Result: [] - Process 3: Add 9,20 to queue, Result: [[3]] - Process 9,20: Add 15,7 to queue, Result: [[3],[9,20]] - Process 15,7: Result: [[3],[9,20],[15,7]] Done