Iterative Deepening

BFS-like behavior with DFS memory.

Iterative deepening: depth-limited DFS with increasing limits.

for depth from 0 to infinity:
    if DFS(start, goal, depth):
        return found

function DFS(node, goal, depth):
    if node == goal: return true
    if depth == 0: return false
    for neighbor in node.neighbors:
        if DFS(neighbor, goal, depth-1):
            return true
    return false

Combines BFS optimality with DFS memory (O(d)O(d)). Repeated work dominated by final level.