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 (). Repeated work dominated by final level.