Data Structures24 min read

Topological Sort

Order tasks with dependencies using topological sort, useful for builds, courses, and workflows.

David Miller
November 12, 2025
1.4k29

Topological sort orders nodes so dependencies come first.

Example: course prerequisites

graph = {
  "A": ["C"],
  "B": ["C"],
  "C": ["D"],
  "D": []
}

Kahn's algorithm

from collections import deque, defaultdict

def topo(g):
    indeg = defaultdict(int)
    for u in g:
        for v in g[u]:
            indeg[v] += 1

    q = deque([u for u in g if indeg[u] == 0])
    order = []

    while q:
        u = q.popleft()
        order.append(u)
        for v in g[u]:
            indeg[v] -= 1
            if indeg[v] == 0:
                q.append(v)
    return order

print(topo(graph))

Graph

flowchart LR
  A --> C
  B --> C
  C --> D

Remember

  • only for DAG (no cycles)
  • used in scheduling and builds
#Python#Advanced#Graph