DFS erforscht einen Graphen, indem es entlang jedes Zweigs so tief wie möglich vordringt, bevor es zurückweicht. Es verwendet einen Stack (oft den Call Stack über Rekursion) und besucht einen vollständigen Pfad, bevor es Alternativen erforscht.
Die Idee
Von einem Knoten aus rekursiv in einen unbesuchten Nachbarn gehen und tief vordringen; wenn man steckenbleibt, zurückweichen und einen anderen Zweig versuchen.
Beispiel
():
visited :
visited = ()
visited.add(node)
order = [node]
nbr graph[node]:
nbr visited:
order += dfs(graph, nbr, visited)
order
graph = {: [, ], : [], : [], : []}
dfs(graph, )
