Depth-first search (DFS)

Applies to: general

DFS explores a graph by going as deep as possible before backtracking, using a stack (or recursion). It is the natural way to traverse trees, detect cycles, and explore all paths.

def dfs(node, seen):
    seen.add(node)
    for nb in neighbors(node):
        if nb not in seen: dfs(nb, seen)

See also: graph, tree, stack, recursion