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);
}
}