Graph Traversal (BFS & DFS)

Trees & Graphs

Shortest paths, flood fills, and connected components in arbitrary networks

166 problems·3 Easy·84 Medium·79 Hard
Pattern Study Guide & Cheat Sheet

Explore vertices and edges in arbitrary networks using BFS (for unweighted shortest paths) or DFS (for connectivity, cycle detection, and component exploration).

Core Invariant: Visited Set Invariant: A node must be marked visited AT THE MOMENT IT IS ENQUEUED (for BFS) or entered (for DFS). Marking on pop causes the same node to be enqueued multiple times exponentially.

Recognize it (Keywords & Signals)
  • Shortest path / minimum transformations in unweighted graph
  • Clone graph / serialize network
  • Connected components / bipartite graph check
  • Word ladder (transform word A to B)
  • Detect cycle in directed or undirected graph
When NOT to use

Weighted graph with varying edge costs (use Dijkstra for non-negative weights, Bellman-Ford for negative weights).

How to solve (Step-by-step)
  1. 1.Construct adjacency list: `graph = collections.defaultdict(list)`.
  2. 2.Choose traversal: BFS (`deque`) for shortest path; DFS (recursion) for exploration/cycles.
  3. 3.Initialize `visited = set([start_node])` and `queue = deque([(start_node, 0)])`.
  4. 4.While queue is not empty: pop `curr, dist`.
  5. 5.If `curr == target`, return `dist`.
  6. 6.For each `neighbor in graph[curr]`: if `neighbor not in visited`, mark `visited.add(neighbor)` and `queue.append((neighbor, dist + 1))`.
Watch for (Interview Traps)
  • Marking visited on pop instead of enqueue: causes catastrophic duplicate queue insertions and TLE
  • Directed vs undirected: adding bidirectional edges when edges are strictly directed
  • Not handling disconnected graph components (need a wrapper loop over all nodes `0..V-1`)
BFS Shortest Path (Unweighted Graph)
from collections import deque, defaultdict

def bfs_shortest_path(edges: list[list[int]], start: int, target: int) -> int:
    # 1. Build adjacency list
    graph = defaultdict(list)
    for u, v in edges:
        graph[u].append(v)
        graph[v].append(u)
        
    # 2. Queue stores (current_node, distance)
    queue = deque([(start, 0)])
    visited = {start}  # ALWAYS mark visited at enqueue time
    
    while queue:
        curr, dist = queue.popleft()
        if curr == target:
            return dist
            
        for neighbor in graph[curr]:
            if neighbor not in visited:
                visited.add(neighbor)
                queue.append((neighbor, dist + 1))
                
    return -1  # Target unreachable
Cost
O(V + E) visits every vertex and edge once · O(V) for queue and visited set (Linear in graph size for adjacency list representation.)
Canonical problems
#127 Word Ladder: BFS finds shortest sequence of 1-letter word mutations
#133 Clone Graph: DFS/BFS with hash map mapping original node to cloned copy
#785 Is Graph Bipartite?: 2-color BFS/DFS to verify no adjacent nodes share same color
#200 Number of Islands: Graph traversal over grid adjacency
Medium·90 companies·Max freq 100%·Acc 64.7%
HiveAndurilTinkoff+87
Medium·55 companies·Max freq 100%·Acc 59.0%
InformaticaLyftC3.ai+52
Medium·50 companies·Max freq 100%·Acc 51.8%
ZenefitsGravitonYelp+47
Hard·46 companies·Max freq 100%·Acc 46.0%
FanaticsCleverTapNavan+43
Medium·39 companies·Max freq 100%·Acc 55.9%
ZenefitsinstabaseSnowflake+36
Hard·26 companies·Max freq 100%·Acc 44.7%
HopperPinterestNetflix+23
Medium·25 companies·Max freq 100%·Acc 64.4%
Tower Research CapitalTower Research CapitalUrban Company+22
Hard·24 companies·Max freq 100%·Acc 37.3%
XPocket GemsUber+21
Medium·22 companies·Max freq 100%·Acc 42.2%
HTCMakeMyTripStripe+19
Medium·22 companies·Max freq 100%·Acc 74.1%
SchlumbergerGrubhubRoku+19
Medium·20 companies·Max freq 100%·Acc 65.7%
FlexportPocket GemsWix+17
Hard·20 companies·Max freq 93%·Acc 56.8%
DoorDashWeRideDuolingo+17
Medium·17 companies·Max freq 100%·Acc 0.6%
ZIPeBayCoupang+14
Hard·16 companies·Max freq 100%·Acc 27.8%
YelpOktaLyft+13
Medium·15 companies·Max freq 87%·Acc 0.5%
PornhubMolocoNeetCode 150+12
Medium·14 companies·Max freq 100%·Acc 61.2%
Urban CompanyServiceNowNeetCode 150+11
Medium·13 companies·Max freq 100%·Acc 64.1%
DoorDashNeetCode 150NeetCode 150+10
Hard·13 companies·Max freq 100%·Acc 39.5%
LucidCiscoGraviton+10
Medium·12 companies·Max freq 100%·Acc 71.3%
DirectiNeetCode 150NeetCode 150+9
Medium·12 companies·Max freq 100%·Acc 49.0%
ToastHubspotLinkedIn+9
Medium·12 companies·Max freq 75%·Acc 52.8%
SamsungMeeshoTikTok+9
Medium·11 companies·Max freq 100%·Acc 50.1%
ZenefitsNeetCode 150NeetCode 150+8
Medium·11 companies·Max freq 100%·Acc 66.9%
Akuna CapitalPhonePeIBM+8
Medium·11 companies·Max freq 100%·Acc 61.0%
Akuna CapitalNetflixNeetCode 150+8
Medium·11 companies·Max freq 88%·Acc 59.6%
LimeSamsungLinkedIn+8
Hard·11 companies·Max freq 88%·Acc 0.6%
KLA TencorInMobiAkuna Capital+8
Hard·11 companies·Max freq 77%·Acc 60.0%
UberMathWorksMeesho+8
Medium·11 companies·Max freq 75%·Acc 0.7%
BoxNeetCode 150NeetCode 150+8
Medium·10 companies·Max freq 100%·Acc 76.0%
CadenceGravitonSnowflake+7
Medium·10 companies·Max freq 100%·Acc 65.1%
XGeneral MotorsX+7
Hard·10 companies·Max freq 100%·Acc 66.8%
SnowflakeAckoTwo Sigma+7
Hard·10 companies·Max freq 100%·Acc 43.3%
DropboxNCRBNY Mellon+7
Medium·10 companies·Max freq 92%·Acc 57.0%
VerilyZeta GlobalDocusign+7
Hard·10 companies·Max freq 90%·Acc 40.7%
UberMolocoWaymo+7
Hard·9 companies·Max freq 100%·Acc 39.6%
RampAirbnbRippling+6
Medium·9 companies·Max freq 100%·Acc 70.7%
Two SigmaBloombergAmazon+6
Medium·8 companies·Max freq 89%·Acc 61.8%
AsanaPalantirOracle+5
Easy·7 companies·Max freq 100%·Acc 50.9%
Arista NetworksTuringAmazon+4
Medium·7 companies·Max freq 100%·Acc 0.5%
Sumo LogicSumo LogicCleverTap+4
Medium·7 companies·Max freq 100%·Acc 42.6%
StacklineSplunkGoogle+4
Hard·7 companies·Max freq 88%·Acc 50.9%
JuspayPhonePeAnduril+4
Medium·7 companies·Max freq 88%·Acc 50.3%
ChimeLyftAirbnb+4
Hard·7 companies·Max freq 85%·Acc 65.7%
PhonePeGoogleUber+4
Medium·7 companies·Max freq 81%·Acc 62.3%
NetflixSnowflakeUber+4
Medium·7 companies·Max freq 75%·Acc 56.1%
CiscoSalesforceZeta Global+4
Medium·7 companies·Max freq 65%·Acc 63.8%
PhonePePayPalFlipkart+4
Hard·7 companies·Max freq 65%·Acc 41.9%
PhonePeDatabricksAirbnb+4
Hard·7 companies·Max freq 63%·Acc 0.6%
CitadelSquarepoint CapitalPalo Alto Networks+4
Medium·7 companies·Max freq 50%·Acc 71.2%
CitadelAmazonGoogle+4
Medium·7 companies·Max freq 39%·Acc 61.3%
TikTokSalesforceMeta+4
Hard·6 companies·Max freq 100%·Acc 0.5%
Hudson River TradingHudson River TradingTarget+3
Medium·6 companies·Max freq 88%·Acc 67.3%
IntuitUberSnowflake+3
Hard·6 companies·Max freq 75%·Acc 68.2%
DE ShawTuringGoogle+3
Hard·6 companies·Max freq 63%·Acc 66.9%
UberAccentureGoogle+3
Medium·6 companies·Max freq 50%·Acc 60.0%
TikTokUberAmazon+3
Hard·5 companies·Max freq 92%·Acc 62.6%
SAPAppleDoorDash+2
Medium·5 companies·Max freq 63%·Acc 83.7%
BloombergNetflixAmazon+2
Medium·5 companies·Max freq 63%·Acc 0.5%
SnapSnapAmazon+2
Hard·5 companies·Max freq 60%·Acc 61.8%
NutanixMicrosoftOracle+2
Hard·5 companies·Max freq 56%·Acc 57.2%
JuspayLinkedInGoogle+2
Hard·5 companies·Max freq 56%·Acc 66.0%
CitadelMetaAmazon+2
Medium·5 companies·Max freq 54%·Acc 55.2%
UberTikTokGoogle+2
Hard·5 companies·Max freq 50%·Acc 0.7%
UberDE ShawMeta+2
Medium·5 companies·Max freq 50%·Acc 66.0%
TikTokMicrosoftAmazon+2
Medium·5 companies·Max freq 50%·Acc 65.6%
SamsungGoogleMeta+2
Easy·5 companies·Max freq 38%·Acc 55.5%
BloombergMicrosoftAmazon+2
Medium·5 companies·Max freq 38%·Acc 70.7%
GoogleBloombergMeta+2
Medium·5 companies·Max freq 38%·Acc 65.4%
MicrosoftAmazonUber+2
Medium·5 companies·Max freq 25%·Acc 37.6%
MetaAmazonGoogle+2
Hard·4 companies·Max freq 100%·Acc 40.0%
ZomatoPhonePeMeta+1
Hard·4 companies·Max freq 100%·Acc 57.0%
ServiceNowOracleMicrosoft+1
Medium·4 companies·Max freq 89%·Acc 53.5%
GuidewireBoltAmazon+1
Hard·4 companies·Max freq 88%·Acc 67.2%
AirbnbLyftBloomberg+1
Medium·4 companies·Max freq 88%·Acc 53.1%
JuspayAmazonBloomberg+1
Medium·4 companies·Max freq 75%·Acc 81.7%
AirbnbGoogleMeta+1
Medium·4 companies·Max freq 65%·Acc 55.5%
UberGoogleBloomberg+1
Medium·4 companies·Max freq 63%·Acc 43.7%
SalesforceAppleMicrosoft+1
Medium·4 companies·Max freq 63%·Acc 62.3%
OracleGoogleAmazon+1
Medium·4 companies·Max freq 63%·Acc 63.2%
AtlassianAmazonMicrosoft+1
Hard·4 companies·Max freq 63%·Acc 59.6%
AtlassianAmazonMicrosoft+1
Hard·4 companies·Max freq 63%·Acc 56.1%
AtlassianMicrosoftGoogle+1
Hard·4 companies·Max freq 38%·Acc 66.1%
GoogleMetaAmazon+1
Hard·4 companies·Max freq 38%·Acc 66.6%
UberAmazonMeta+1
Easy·4 companies·Max freq 38%·Acc 86.6%
MicrosoftBloombergAmazon+1
Medium·4 companies·Max freq 16%·Acc 80.8%
MicrosoftMetaAmazon+1
Hard·4 companies·Max freq 15%·Acc 64.6%
GoogleMetaAmazon+1
Medium·3 companies·Max freq 100%·Acc 55.8%
Deutsche BankAtlassianAmazon
Medium·3 companies·Max freq 88%·Acc 42.5%
Akuna CapitalAmazonGoogle
Medium·3 companies·Max freq 60%·Acc 61.7%
RipplingUberGoogle
Hard·3 companies·Max freq 56%·Acc 42.4%
CitadelGoogleMeta
Medium·3 companies·Max freq 52%·Acc 67.6%
UberAmazonGoogle
Hard·3 companies·Max freq 50%·Acc 31.1%
SnowflakeGoogleAmazon
Hard·3 companies·Max freq 50%·Acc 66.6%
Goldman SachsAmazonGoogle
Medium·3 companies·Max freq 25%·Acc 44.2%
MetaMicrosoftGoogle
Hard·3 companies·Max freq 25%·Acc 56.5%
GoogleAmazonBloomberg
Hard·3 companies·Max freq 25%·Acc 63.4%
UberGoogleMicrosoft
Medium·3 companies·Max freq 16%·Acc 61.9%
MicrosoftAmazonGoogle
Medium·3 companies·Max freq 15%·Acc 55.3%
GoogleBloombergMeta
Medium·3 companies·Max freq 13%·Acc 0.7%
BloombergAmazonGoogle
Hard·3 companies·Max freq 13%·Acc 66.2%
AmazonMicrosoftGoogle
Medium·2 companies·Max freq 100%·Acc 60.6%
MakeMyTripGoogle
Hard·2 companies·Max freq 100%·Acc 0.4%
Hudson River TradingHudson River Trading
Medium·2 companies·Max freq 100%·Acc 0.7%
Hudson River TradingHudson River Trading
Hard·2 companies·Max freq 100%·Acc 46.9%
WeRideDoorDash
Hard·2 companies·Max freq 100%·Acc 45.8%
DropboxUber
Hard·2 companies·Max freq 93%·Acc 32.1%
GameskraftGoogle
Hard·2 companies·Max freq 88%·Acc 65.4%
SamsungNike
Hard·2 companies·Max freq 88%·Acc 57.3%
AdobeMicrosoft
Hard·2 companies·Max freq 83%·Acc 38.7%
InMobiGoogle
Medium·2 companies·Max freq 77%·Acc 61.0%
FlipkartGoldman Sachs
Hard·2 companies·Max freq 75%·Acc 51.6%
Oscar HealthGoogle
Medium·2 companies·Max freq 70%·Acc 53.9%
VimeoBloomberg
Hard·2 companies·Max freq 69%·Acc 44.6%
GoDaddyAmazon
Medium·2 companies·Max freq 54%·Acc 45.7%
PhonePeAmazon
Hard·2 companies·Max freq 50%·Acc 44.0%
UberAmazon
Hard·2 companies·Max freq 38%·Acc 73.9%
OracleMicrosoft
Medium·2 companies·Max freq 38%·Acc 31.0%
GoogleAmazon
Medium·2 companies·Max freq 38%·Acc 52.7%
BloombergGoogle
Medium·2 companies·Max freq 38%·Acc 31.0%
MicrosoftGoogle
Medium·2 companies·Max freq 27%·Acc 59.0%
MetaGoogle
Hard·2 companies·Max freq 25%·Acc 65.6%
AppleGoogle
Medium·2 companies·Max freq 25%·Acc 70.4%
GoogleMeta
Hard·2 companies·Max freq 25%·Acc 70.9%
GoogleAmazon
Hard·2 companies·Max freq 25%·Acc 61.0%
UberGoogle
Medium·2 companies·Max freq 25%·Acc 45.1%
UberGoogle
Hard·2 companies·Max freq 13%·Acc 0.6%
GoogleAmazon
Hard·2 companies·Max freq 13%·Acc 50.9%
AmazonBloomberg
Hard·1 companies·Max freq 100%·Acc 31.1%
BNY Mellon
Medium·1 companies·Max freq 100%·Acc 43.5%
Samsung
Hard·1 companies·Max freq 100%·Acc 22.8%
PhonePe
Hard·1 companies·Max freq 100%·Acc 45.8%
IVP
Medium·1 companies·Max freq 88%·Acc 49.5%
Juspay
Hard·1 companies·Max freq 88%·Acc 51.8%
Adobe
Medium·1 companies·Max freq 84%·Acc 66.9%
Agoda
Hard·1 companies·Max freq 75%·Acc 44.7%
DE Shaw
Medium·1 companies·Max freq 63%·Acc 58.1%
Oracle
Hard·1 companies·Max freq 63%·Acc 23.8%
Oracle
Medium·1 companies·Max freq 52%·Acc 54.1%
Adobe
Hard·1 companies·Max freq 50%·Acc 46.2%
Uber
Medium·1 companies·Max freq 43%·Acc 77.9%
Google
Medium·1 companies·Max freq 38%·Acc 66.1%
Microsoft
Hard·1 companies·Max freq 38%·Acc 42.7%
Google
Hard·1 companies·Max freq 26%·Acc 40.3%
Google
Medium·1 companies·Max freq 25%·Acc 65.8%
TikTok
Medium·1 companies·Max freq 25%·Acc 63.6%
Amazon
Hard·1 companies·Max freq 25%·Acc 42.9%
Amazon
Medium·1 companies·Max freq 25%·Acc 45.9%
Amazon
Hard·1 companies·Max freq 25%·Acc 43.6%
Amazon
Hard·1 companies·Max freq 25%·Acc 68.7%
Goldman Sachs
Hard·1 companies·Max freq 25%·Acc 58.5%
Google
Hard·1 companies·Max freq 25%·Acc 40.4%
Google
Medium·1 companies·Max freq 25%·Acc 41.5%
Google
Hard·1 companies·Max freq 25%·Acc 79.3%
Google
Hard·1 companies·Max freq 25%·Acc 36.4%
Google
Medium·1 companies·Max freq 25%·Acc 37.3%
Google
Hard·1 companies·Max freq 25%·Acc 61.1%
Google
Hard·1 companies·Max freq 25%·Acc 34.6%
Google
Hard·1 companies·Max freq 25%·Acc 59.5%
Google
Medium·1 companies·Max freq 25%·Acc 56.8%
Google
Hard·1 companies·Max freq 25%·Acc 70.1%
Google
Medium·1 companies·Max freq 13%·Acc 49.1%
Amazon
Hard·1 companies·Max freq 13%·Acc 31.8%
Amazon
Hard·1 companies·Max freq 13%·Acc 37.0%
Bloomberg
Hard·1 companies·Max freq 13%·Acc 55.6%
Google
Hard·1 companies·Max freq 13%·Acc 52.5%
Google
Hard·1 companies·Max freq 13%·Acc 22.5%
Google
Showing 166 of 166 problems in Graph Traversal (BFS & DFS)Filtered: All Companies