DFS explora um grafo indo o mais profundo possível ao longo de cada ramo antes de retroceder. Ele usa uma pilha (frequentemente a pilha de chamadas via recursão) e visita um caminho completo antes de explorar alternativas.
A ideia
De um nó, recurse em um vizinho não visitado e continue profundo; quando preso, volte e tente outro ramo.
Exemplo
():
visited :
visited = ()
visited.add(node)
order = [node]
nbr graph[node]:
nbr visited:
order += dfs(graph, nbr, visited)
order
graph = {: [, ], : [], : [], : []}
dfs(graph, )
