Command Palette

Search for a command to run...

← All patterns

Pattern · Trees

Tree BFS (Level Order)

Process the tree level by level with a queue, handling exactly one level per loop.

Time O(n) · Space O(width)

Taught in Module 16: Binary Trees

Think of it like this

Reading a family tree generation by generation: grandparents, then parents, then children.

Clues that point here

  • → "Level order", "by level", "zigzag"
  • → Right side view
  • → Minimum depth
  • → Anything per level (averages, max)

Not this pattern when

  • ✕ The answer depends on full root-to-leaf paths (DFS is simpler)

The template

A skeleton to adapt. The parts in comments are what changes from problem to problem.

Tree BFS (Level Order) · template
Queue<TreeNode> q = new ArrayDeque<>();
if (root != null) q.offer(root);
while (!q.isEmpty()) {
    int size = q.size();                 // nodes on this level
    for (int i = 0; i < size; i++) {
        TreeNode node = q.poll();
        visit(node);
        if (node.left != null) q.offer(node.left);
        if (node.right != null) q.offer(node.right);
    }
}

Common versions

  • Level order traversal
  • Zigzag level order
  • Right side view
  • Minimum depth
  • Average of levels

Practice problems with this pattern

Related patterns