DFS explore un graphe en allant aussi loin que possible le long de chaque branche avant de revenir en arrière. Elle utilise une pile (souvent la pile d'appels via la récursion) et visite un chemin complet avant d'explorer les alternatives.
L'idée
À partir d'un nœud, on recurse dans un voisin non visité et on continue en profondeur ; quand on est bloqué, on remonte et on essaie une autre branche.
Exemple
():
visited :
visited = ()
visited.add(node)
order = [node]
nbr graph[node]:
nbr visited:
order += dfs(graph, nbr, visited)
order
graph = {: [, ], : [], : [], : []}
dfs(graph, )
