Add a better DFS solution

This commit is contained in:
2026-07-31 18:00:45 -07:00
parent fe9d4a3c9f
commit 6d2097c358

View File

@@ -1,24 +1,33 @@
# Adjacency list
first_graph = {
1: [3, 20],
1: [3, 20, 4, 5, 6],
2: [20],
3: [1, 20],
20: [2, 3]
20: [2, 3],
4: [1],
5: [1],
6: [1]
}
# First exercise: go from 1, to 20, to 2
first_graph[first_graph[1][1]][0]
# pass visited by reference
def depth_first_search(graph: dict, start, visited=set()):
print(start)
def depth_first_search(graph: dict, start, visited=set(), traversal=list()):
if start in visited:
return
visited.add(start)
traversal.append(start)
if len(visited)==len(graph):
return visited
return
for x in graph[start]:
if x not in visited:
visited.add(x)
return depth_first_search(graph, x, visited)
depth_first_search(graph, x, visited, traversal)
depth_first_search(first_graph, 1)
visited = set()
traversal = list()
depth_first_search(first_graph, 1, visited, traversal)
print("Visited:", visited)
print("Traversal:", traversal)