Tree Breadth-First Search (BFS)

Trees & Graphs

Level-order traversal and horizontal tier exploration using queues

381 problems·40 Easy·235 Medium·106 Hard
Pattern Study Guide & Cheat Sheet
▼

Traverse tree level by level using a FIFO queue, processing all nodes at depth D before any node at depth D+1.

Core Invariant: Level Snapshot: At the start of each while loop iteration, `len(queue)` EXACTLY equals the number of nodes on the current level. Process that fixed count in a loop before touching the next level.

Recognize it (Keywords & Signals)
  • Level order traversal / zigzag level order
  • Binary tree right side view
  • Populate next right pointers in each node
  • Minimum depth of binary tree (earliest leaf found)
When NOT to use

Path sum from root to leaf or deep ancestor queries (Tree DFS is simpler and uses less auxiliary memory).

How to solve (Step-by-step)
  1. 1.If `not root: return []`.
  2. 2.Initialize `queue = collections.deque([root])`.
  3. 3.While `queue`: capture `level_size = len(queue)` and create `current_level = []`.
  4. 4.Loop `for _ in range(level_size)`: pop `node = queue.popleft()`, append `node.val` to `current_level`.
  5. 5.Enqueue children: `if node.left: queue.append(node.left)` and `if node.right: queue.append(node.right)`.
  6. 6.Append `current_level` to `result`.
Watch for (Interview Traps)
  • Using dynamic `len(queue)` directly in `while` loop condition without freezing `level_size`
  • Forgetting to check `if not root:` before creating queue (adds `None` to queue)
  • Using a Python list as queue with `pop(0)` (which is O(N) per pop!) instead of `deque.popleft()` (O(1))
Level-by-Level Tree BFS (Level Order Traversal)
from collections import deque

def level_order(root: TreeNode | None) -> list[list[int]]:
    if not root:
        return []
        
    levels = []
    queue = deque([root])
    
    while queue:
        level_size = len(queue)  # Snapshot number of nodes at this depth
        curr_level = []
        
        for _ in range(level_size):
            node = queue.popleft()
            curr_level.append(node.val)
            
            if node.left:
                queue.append(node.left)
            if node.right:
                queue.append(node.right)
                
        levels.append(curr_level)
        
    return levels
Cost
O(N) visits each node once · O(W) where W is maximum width of tree (up to N/2 at bottom level) (Optimal for level-oriented questions.)
Canonical problems
#102 Binary Tree Level Order Traversal: Standard level batching
#199 Binary Tree Right Side View: Last element in each level snapshot is visible from the right
#103 Binary Tree Zigzag Level Order Traversal: Reverse alternate level arrays or use deque
#111 Minimum Depth of Binary Tree: First leaf node encountered across levels guarantees minimum depth
Medium·93 companies·Max freq 100%·Acc 64.7%
SnapAndurilTikTok+90
Medium·55 companies·Max freq 100%·Acc 59.0%
InformaticaC3.aiLyft+52
Medium·52 companies·Max freq 100%·Acc 51.8%
NordstromGravitonState Farm+49
Hard·46 companies·Max freq 100%·Acc 46.0%
RedditCleverTapNavan+43
Medium·40 companies·Max freq 100%·Acc 55.9%
instabaseZenefitsSnowflake+37
Hard·30 companies·Max freq 100%·Acc 42.5%
BaiduDoorDashWix+27
Hard·27 companies·Max freq 100%·Acc 61.1%
YahooHiveNeetCode 150+24
Hard·26 companies·Max freq 100%·Acc 0.4%
UberXPocket Gems+23
Medium·25 companies·Max freq 88%·Acc 36.0%
WixNeetCode 150NeetCode 150+22
Medium·24 companies·Max freq 100%·Acc 69.7%
NewsBreakAirwallexMeta+21
Easy·24 companies·Max freq 88%·Acc 65.8%
MetaWixNeetCode 150+21
Medium·23 companies·Max freq 100%·Acc 42.2%
HTCMakeMyTripStripe+20
Medium·22 companies·Max freq 100%·Acc 74.1%
GrubhubSchlumbergerRoku+19
Easy·21 companies·Max freq 100%·Acc 78.4%
YahooNeetCode 150NeetCode 150+18
Medium·21 companies·Max freq 100%·Acc 65.7%
FlexportPocket GemsWix+18
Hard·21 companies·Max freq 93%·Acc 0.6%
DoorDashWeRideDuolingo+18
Medium·20 companies·Max freq 100%·Acc 65.8%
MixpanelHBOX+17
Medium·20 companies·Max freq 100%·Acc 73.0%
GojekNeetCode 150NeetCode 150+17
Medium·20 companies·Max freq 89%·Acc 67.8%
OktaWixZepto+17
Hard·19 companies·Max freq 100%·Acc 47.4%
DeltaXUberPinterest+16
Medium·19 companies·Max freq 100%·Acc 64.1%
SigmoidNutanixAdobe+16
Medium·18 companies·Max freq 100%·Acc 59.6%
McKinseyTower Research CapitalTower Research Capital+15
Hard·18 companies·Max freq 90%·Acc 56.9%
SnapSnapMoloco+15
Medium·18 companies·Max freq 83%·Acc 61.6%
GrabDocusignByteDance+15
Medium·17 companies·Max freq 100%·Acc 61.4%
ZIPeBayCoupang+14
Hard·17 companies·Max freq 100%·Acc 0.6%
Otter.aiMedia.netX+14
Hard·17 companies·Max freq 100%·Acc 0.5%
GravitonDE ShawMathWorks+14
Medium·17 companies·Max freq 88%·Acc 70.7%
MetaWixNeetCode 150+14
Medium·16 companies·Max freq 100%·Acc 70.9%
XXNeetCode 150+13
Hard·16 companies·Max freq 100%·Acc 27.8%
YelpOktaLyft+13
Hard·16 companies·Max freq 100%·Acc 46.5%
AppFolioPinterestIMC+13
Medium·16 companies·Max freq 81%·Acc 51.8%
MetaAndurilYahoo+13
Hard·15 companies·Max freq 100%·Acc 54.2%
SamsungRokuMeta+12
Medium·15 companies·Max freq 100%·Acc 61.2%
Urban CompanyServiceNowNeetCode 150+12
Hard·15 companies·Max freq 100%·Acc 45.0%
Applied IntuitionGleanZenefits+12
Medium·15 companies·Max freq 88%·Acc 77.0%
UberNeetCode 150NeetCode 150+12
Medium·15 companies·Max freq 87%·Acc 0.5%
PornhubMolocoNeetCode 150+12
Hard·14 companies·Max freq 100%·Acc 0.4%
DropboxNCRBNY Mellon+11
Medium·14 companies·Max freq 100%·Acc 54.4%
GravitonPhonePeDoorDash+11
Medium·14 companies·Max freq 100%·Acc 0.7%
blinkitShareChatServiceNow+11
Medium·14 companies·Max freq 88%·Acc 42.0%
VerilyWaymoeBay+11
Medium·14 companies·Max freq 63%·Acc 60.5%
UberWalmart LabsSnap+11
Medium·13 companies·Max freq 100%·Acc 56.7%
RevolutAccentureYandex+10
Hard·13 companies·Max freq 100%·Acc 39.5%
GravitonLucidCisco+10
Medium·13 companies·Max freq 100%·Acc 64.1%
DoorDashNeetCode 150NeetCode 150+10
Medium·13 companies·Max freq 92%·Acc 0.6%
SnapTikTokSnap+10
Medium·13 companies·Max freq 88%·Acc 56.1%
oyoDocusignZIP+10
Easy·13 companies·Max freq 88%·Acc 0.7%
CriteoQualtricsAmazon+10
Easy·13 companies·Max freq 85%·Acc 67.5%
NeetCode 150NeetCode 150Blind 75+10
Medium·13 companies·Max freq 83%·Acc 69.1%
NeetCode 150NeetCode 150Blind 75+10
50 displayed (of 50 matching)Filtered: All Companies

Top Companies Testing Tree Breadth-First Search (BFS)

Browse company-specific interview problem lists and recency breakdowns:

Explore All 22 DSA Coding Patterns

Master core algorithmic patterns tested in FAANG & Big Tech coding interviews.

Patterns Hub

Tree Breadth-First Search (BFS) frequently asked questions

What is the Tree Breadth-First Search (BFS) pattern in coding interviews?

Level-order traversal and horizontal tier exploration using queues It is categorized under Trees & Graphs and features 381 curated interview problems across Easy (40), Medium (235), and Hard (106) difficulties.

Which tech companies frequently test Tree Breadth-First Search (BFS)?

Companies frequently asking Tree Breadth-First Search (BFS) questions include Google, Amazon, Meta, Microsoft, Bloomberg, Uber.

How do I master the Tree Breadth-First Search (BFS) pattern?

Start by studying the algorithmic strategy and template code, then practice Easy and Medium problems before attempting Hard problems under timed conditions.