shivajikobardan
Junior Member
- Joined
- Nov 1, 2021
- Messages
- 107
Python:
# Python dictionary to act as an adjacency list
graph = {
'7' : ['19','21', '14'],
'19': ['1', '12', '31'],
'21': [],
'14': ['23', '6'],
'1' : [],
'12': [],
'31': [],
'23': [],
'6' : []
}
visited = [] # List of visited nodes of graph.
def dfs(visited, graph, node):
if node not in visited:
visited.append(node)
for neighbor in graph[node]:
dfs(visited, graph, neighbor)
print(node)
# Driver Code
print("Following is the Depth-First Search")
dfs(visited, graph, '7')
print("visited=",visited)
what I don't understand is how do once this program reaches to print(1) what happens next, it doesn't make any sense to me.
idk if I am stupid or what to not realize sth very trivial or idk.
I will try to explain what is my problem, step by step.
steps-:
1) dfs(visited,graph,7)
2)
7 not in visited.
visited=7
dfs(19)
3) 19 not in visited.
visited=7,19
dfs(1)
4) 1 not in visited
visited=7,19,1
1 has no neighbours.
print(1)
imo the code should stop now. Because there is no function call no nth. But in fact the code goes to
for neighbour in graph(node):
dfs(visited,graph,neighbour)
and starts with dfs(12). I don't understand this....How does it happen?
how can it go to for loop just like that?(source-:https://cscircles.cemc.uwaterloo.ca/visualize#mode=display)
even if it doesn't go to for loop, I can't make sense where it really goes. Can you please guide me about this issue?