Binary Tree Level Order Traversal — BFS Queue

Sanjeev SharmaSanjeev Sharma
1 min read

Advertisement

Problem 361 · Binary Tree Level Order Traversal

Difficulty: Medium · Pattern: BFS Level Order

Solutions

# Python
from collections import deque
def levelOrder(root):
    if not root: return []
    queue = deque([root]); result = []
    while queue:
        level = []
        for _ in range(len(queue)):
            node = queue.popleft()
            level.append(node.val)
            if node.left: queue.append(node.left)
            if node.right: queue.append(node.right)
        result.append(level)
    return result
// 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()) {
        int sz=q.size(); List<Integer> level=new ArrayList<>();
        while (sz-->0) {
            TreeNode n=q.poll(); level.add(n.val);
            if(n.left!=null) q.offer(n.left);
            if(n.right!=null) q.offer(n.right);
        }
        res.add(level);
    }
    return res;
}

Complexity

  • Time: O(n)
  • Space: O(w) where w = max width

Advertisement

Sanjeev Sharma

Written by

Sanjeev Sharma

Full Stack Engineer · E-mopro