Binary Tree Level-Order Traversal (BFS)
Problem
Given the root of a binary tree, return the values of every node visited level by level from left to right. The classical breadth-first walk uses a queue.
Input
tree = [A, B, C, D, E, _, F]Output
[A, B, C, D, E, F]Level-order layout (root first, "_" = missing): A → [B, C], B → [D, E], C → [_, F].
from collections import deque
def level_order(root):
if not root:
return []
out, q = [], deque([root])
while q:
node = q.popleft()
out.append(node.val)
if node.left:
q.append(node.left)
if node.right:
q.append(node.right)
return out
function levelOrder(root) {
if (!root) return [];
const out = [];
const queue = [root];
while (queue.length) {
const node = queue.shift();
out.push(node.val);
if (node.left) queue.push(node.left);
if (node.right) queue.push(node.right);
}
return out;
}
class Solution {
public List<Integer> levelOrder(TreeNode root) {
if (root == null) return new ArrayList<>();
List<Integer> out = new ArrayList<>();
Deque<TreeNode> queue = new ArrayDeque<>();
queue.offer(root);
while (!queue.isEmpty()) {
TreeNode node = queue.poll();
out.add(node.val);
if (node.left != null) queue.offer(node.left);
if (node.right != null) queue.offer(node.right);
}
return out;
}
}
vector<int> levelOrder(TreeNode* root) {
if (!root) return {};
vector<int> out;
queue<TreeNode*> q;
q.push(root);
while (!q.empty()) {
TreeNode* node = q.front(); q.pop();
out.push_back(node->val);
if (node->left) q.push(node->left);
if (node->right) q.push(node->right);
}
return out;
}