Topological Sort (Kahn's & DFS)

Trees & Graphs

Linear dependency ordering and cycle detection in Directed Acyclic Graphs (DAG)

39 problems·1 Easy·15 Medium·23 Hard
Pattern Study Guide & Cheat Sheet
▼

Linearly order vertices in a Directed Acyclic Graph (DAG) such that for every directed edge u -> v, vertex u comes before v (Kahn's algorithm using indegree BFS).

Core Invariant: Kahn's Algorithm: Any node with `indegree == 0` has no remaining prerequisites and can be processed immediately. When processed, decrement indegrees of all outgoing neighbors; new 0-indegree nodes become eligible.

Recognize it (Keywords & Signals)
  • Task prerequisite scheduling / course schedule
  • Compilation dependency order
  • Build system build sequence
  • Detect cycle in directed graph
  • Alien dictionary (derive alphabet ordering)
When NOT to use

Undirected graphs (use standard BFS/DFS or DSU) or graphs known to contain self-loops/cycles where no order can exist.

How to solve (Step-by-step)
  1. 1.Build adjacency list `graph` and calculate `indegree` array/map for all nodes.
  2. 2.Enqueue all nodes with `indegree == 0` into a `queue`.
  3. 3.Initialize `order = []`.
  4. 4.While queue: pop `curr`, append to `order`. For each neighbor `nxt` of `curr`, decrement `indegree[nxt] -= 1`.
  5. 5.If `indegree[nxt] == 0`, enqueue `nxt`.
  6. 6.Cycle check: if `len(order) == num_nodes`, a valid topological order exists; otherwise, a directed cycle was present!
Watch for (Interview Traps)
  • Reversing edge directions (e.g. `[a, b]` direction is `b -> a`, not `a -> b`)
  • Failing to detect cycles by assuming all nodes are processed
  • Disconnected nodes: ensure all vertices `0..n-1` are registered in the indegree table
Kahn's Algorithm (BFS Indegree Topological Sort)
from collections import deque, defaultdict

def topological_sort(num_courses: int, prerequisites: list[list[int]]) -> list[int]:
    graph = defaultdict(list)
    indegrees = [0] * num_courses
    
    # Prerequisite [a, b] means: must take b before a (edge: b -> a)
    for course, prereq in prerequisites:
        graph[prereq].append(course)
        indegrees[course] += 1
        
    # Start with all nodes having zero prerequisites
    queue = deque([i for i in range(num_courses) if indegrees[i] == 0])
    order = []
    
    while queue:
        curr = queue.popleft()
        order.append(curr)
        
        for next_course in graph[curr]:
            indegrees[next_course] -= 1
            if indegrees[next_course] == 0:
                queue.append(next_course)
                
    # If order doesn't include all courses, a cycle exists
    return order if len(order) == num_courses else []
Cost
O(V + E) linear scan of nodes and dependency edges · O(V + E) graph + queue (Optimal linear time dependency resolution.)
Canonical problems
#207 Course Schedule: Detect if prerequisites form a cycle (len(order) == n)
#210 Course Schedule II: Return the actual linear order of courses
#269 Alien Dictionary: Derive character edge directions from adjacent words and sort
#310 Minimum Height Trees: Repeatedly trim leaves (degree 1) inward toward the center
Medium·52 companies·Max freq 100%·Acc 51.8%
NordstromGravitonState Farm+49
Medium·40 companies·Max freq 100%·Acc 55.9%
instabaseZenefitsSnowflake+37
Hard·26 companies·Max freq 100%·Acc 0.4%
UberXPocket Gems+23
Hard·21 companies·Max freq 93%·Acc 0.6%
DoorDashWeRideDuolingo+18
Hard·13 companies·Max freq 100%·Acc 39.5%
GravitonLucidCisco+10
Medium·11 companies·Max freq 92%·Acc 57.0%
VerilyStackAdaptZeta Global+8
Hard·10 companies·Max freq 100%·Acc 0.7%
SnowflakeAckoTwo Sigma+7
Hard·9 companies·Max freq 100%·Acc 39.6%
RampAirbnbRippling+6
Easy·8 companies·Max freq 88%·Acc 56.0%
WixAndurilUber+5
Medium·8 companies·Max freq 65%·Acc 63.8%
PhonePePayPalFlipkart+5
Medium·7 companies·Max freq 100%·Acc 42.6%
SplunkStacklineGoogle+4
Hard·7 companies·Max freq 88%·Acc 50.9%
JuspayAndurilPhonePe+4
Medium·7 companies·Max freq 81%·Acc 62.3%
NetflixSnowflakeUber+4
Hard·7 companies·Max freq 60%·Acc 0.6%
NutanixMorgan StanleyBarclays+4
Medium·7 companies·Max freq 50%·Acc 71.2%
CitadelGoogleAmazon+4
Medium·7 companies·Max freq 39%·Acc 61.3%
TikTokSalesforceGoldman Sachs+4
Hard·6 companies·Max freq 100%·Acc 41.9%
Works ApplicationsSalesforceAmazon+3
Hard·6 companies·Max freq 100%·Acc 54.0%
Hudson River TradingHudson River TradingTarget+3
Medium·6 companies·Max freq 50%·Acc 60.0%
UberTikTokAmazon+3
Hard·5 companies·Max freq 61%·Acc 57.2%
JuspayLinkedInGoogle+2
Hard·5 companies·Max freq 56%·Acc 66.0%
CitadelMetaGoogle+2
Medium·5 companies·Max freq 25%·Acc 37.6%
MetaGoogleAmazon+2
Medium·4 companies·Max freq 63%·Acc 62.3%
OracleGoogleAmazon+1
Hard·3 companies·Max freq 57%·Acc 42.4%
CitadelGoogleMeta
Hard·3 companies·Max freq 38%·Acc 0.7%
OracleSalesforceMicrosoft
Hard·2 companies·Max freq 88%·Acc 57.3%
AdobeMicrosoft
Medium·2 companies·Max freq 38%·Acc 31.0%
GoogleAmazon
Hard·2 companies·Max freq 13%·Acc 50.9%
BloombergAmazon
Hard·1 companies·Max freq 100%·Acc 31.1%
BNY Mellon
Hard·1 companies·Max freq 100%·Acc 22.8%
PhonePe
Hard·1 companies·Max freq 88%·Acc 51.8%
Adobe
Hard·1 companies·Max freq 75%·Acc 44.7%
DE Shaw
Medium·1 companies·Max freq 43%·Acc 77.9%
Google
Hard·1 companies·Max freq 25%·Acc 79.3%
Google
Hard·1 companies·Max freq 25%·Acc 40.4%
Google
Medium·1 companies·Max freq 25%·Acc 41.5%
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 70.1%
Google
39 displayed (of 39 matching)Filtered: All Companies

Top Companies Testing Topological Sort (Kahn's & DFS)

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

Topological Sort (Kahn's & DFS) frequently asked questions

What is the Topological Sort (Kahn's & DFS) pattern in coding interviews?

Linear dependency ordering and cycle detection in Directed Acyclic Graphs (DAG) It is categorized under Trees & Graphs and features 39 curated interview problems across Easy (1), Medium (15), and Hard (23) difficulties.

Which tech companies frequently test Topological Sort (Kahn's & DFS)?

Companies frequently asking Topological Sort (Kahn's & DFS) questions include Google, Amazon, Meta, Microsoft, Bloomberg, Uber.

How do I master the Topological Sort (Kahn's & DFS) pattern?

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