DFS esplora un grafo andando il più possibile in profondità lungo ogni ramo prima di tornare indietro. Utilizza uno stack (spesso lo stack di chiamate via ricorsione) e visita un intero percorso prima di esplorare alternative.
L'idea
Da un nodo, ricorri in un vicino non visitato e continua a scendere in profondità; quando rimani bloccato, torna indietro e prova un altro ramo.
Esempio
():
visited :
visited = ()
visited.add(node)
order = [node]
nbr graph[node]:
nbr visited:
order += dfs(graph, nbr, visited)
order
graph = {: [, ], : [], : [], : []}
dfs(graph, )
