Depth-First Search
Explore as far as possible down one path before backtracking, used to walk trees, graphs, and grids.
Order the nodes of a graph so every task comes after everything it depends on, used for scheduling and build order.
Check whether it is possible to finish every course given their prerequisites.
Find a valid order to take every course given their prerequisites.
Find the roots that produce the shortest possible trees from a given set of connected nodes.
Find a valid compile order for a list of projects given their pairwise dependencies.
Find every node whose paths always dead-end instead of looping forever.
Explore as far as possible down one path before backtracking, used to walk trees, graphs, and grids.
Explore level by level from a starting point, the go-to way to find the shortest path in an unweighted graph.
Find the shortest path from a starting node to every other node in a graph where edges have non-negative weights.
Find the shortest path from a starting node even when some edges have negative weights, and detect negative cycles.
Track which nodes belong to the same group and merge groups quickly, used to detect cycles and build networks.
Build the cheapest network connecting all nodes by adding the smallest edges first, skipping any that form a cycle.