← Trees

Level Order Traversal

Medium
Python
from collections import deque
def level_order(root):
    if not root: return []
    res=[]; q=deque([root])
    while q:
        level=[]
        for _ in range(len(q)):
            node=q.popleft()
            level.append(node.val)
            if node.left: q.append(node.left)
            if node.right: q.append(node.right)
        res.append(level)
    return res
Java
public List<List<Integer>> levelOrder(TreeNode root){
    List<List<Integer>> res=new ArrayList<>();
    if(root==null) return res;
    Queue<TreeNode> q=new LinkedList<>(); q.offer(root);
    while(!q.isEmpty()){
        List<Integer> level=new ArrayList<>();
        int size=q.size();
        for(int i=0;i<size;i++){
            TreeNode node=q.poll(); level.add(node.val);
            if(node.left!=null) q.offer(node.left);
            if(node.right!=null) q.offer(node.right);
        } res.add(level);
    } return res;
}

Key Insight

Python deque vs Java LinkedList as Queue. popleft() vs poll().

Python → Java Differences

  • deque vs LinkedList Queue
  • popleft() vs poll()
  • BFS level-order identical
Python
from collections import deque
def level_order(root):
    if not root: return []
    res=[]; q=deque([root])
    while q:
        level=[]
        for _ in range(len(q)):
            node=q.popleft()
            level.append(node.val)
            if node.left: q.append(node.left)
            if node.right: q.append(node.right)
        res.append(level)
    return res
Java
public List<List<Integer>> levelOrder(TreeNode root){
    List<List<Integer>> res=new ArrayList<>();
    if(root==null) return res;
    Queue<TreeNode> q=new LinkedList<>(); q.offer(root);
    while(!q.isEmpty()){
        List<Integer> level=new ArrayList<>();
        int size=q.size();
        for(int i=0;i<size;i++){
            TreeNode node=q.poll(); level.add(node.val);
            if(node.left!=null) q.offer(node.left);
            if(node.right!=null) q.offer(node.right);
        } res.add(level);
    } return res;
}

Algorithm Steps

1. BFS with queue
2. Process level by level