1. What is Level Order Traversal?
Level Order Traversal is a type of Breadth-First Search (BFS) where we traverse a binary tree level by level, starting from the root and moving to the children from left to right.
2. Example
Given this binary tree:
1 / \ 2 3 / \ 4 5
The level order traversal would be:
1 → 2 → 3 → 4 → 5
3. Why Use Level Order Traversal?
- Useful in printing nodes level by level
- Used in serialization/deserialization of trees
- Helps solve shortest path, distance, or width problems in trees
- Natural for finding parents, leaf nodes, and tree height
4. Concept: How Does It Work?
We use a queue to hold the nodes of each level. The queue ensures:
- Nodes are processed in the order they were added (FIFO).
- We enqueue children after processing the current node.
5. Algorithm Steps
- Initialize an empty queue.
- Enqueue the root node.
- While the queue is not empty:
- Dequeue the front node.
- Visit (process/print) the node.
- Enqueue the left child (if exists).
- Enqueue the right child (if exists).
6. Java Implementation
class TreeNode { int val; TreeNode left, right; TreeNode(int val) { this.val = val; } } import java.util.*; public class LevelOrderTraversal { public void levelOrder(TreeNode root) { if (root == null) return; Queue<TreeNode> queue = new LinkedList<>(); queue.offer(root); // Add root to queue while (!queue.isEmpty()) { TreeNode current = queue.poll(); // Remove front node System.out.print(current.val + " "); // Visit // Add left and right children to queue if (current.left != null) queue.offer(current.left); if (current.right != null) queue.offer(current.right); } } public static void main(String[] args) { /* 1 / \ 2 3 / \ 4 5 */ TreeNode root = new TreeNode(1); root.left = new TreeNode(2); root.right = new TreeNode(3); root.left.left = new TreeNode(4); root.left.right = new TreeNode(5); LevelOrderTraversal tree = new LevelOrderTraversal(); System.out.println("Level Order Traversal:"); tree.levelOrder(root); // Output: 1 2 3 4 5 } }
7. Time and Space Complexity
Measure | Value |
Time Complexity | O(n) – every node is visited once |
Space Complexity | O(n) – queue holds all nodes in worst case (e.g., last level) |
8. Level Order with Levels Separated
public void levelOrderByLine(TreeNode root) { if (root == null) return; Queue<TreeNode> queue = new LinkedList<>(); queue.offer(root); while (!queue.isEmpty()) { int levelSize = queue.size(); // Number of nodes at current level for (int i = 0; i < levelSize; i++) { TreeNode current = queue.poll(); System.out.print(current.val + " "); if (current.left != null) queue.offer(current.left); if (current.right != null) queue.offer(current.right); } System.out.println(); // Move to next line after each level } }
Output:
1 2 3 4 5