亲爱的
预先感谢您。
我的问题是关于DFS算法。
我的代码和结果如下。
graph = [
[],
[2,3,8],
[1,7],
[1,4,5],
[3,5],
[3,4],
[7],
[2,6,8],
[1,7]
]
visited = [False]*9
def dfs(graph, v, visited):
visited[v] = True
#print(v, end='')
for i in graph[v]:
print("i:",i,"v:",v)
if not visited[i]:
print("no")
dfs(graph,i,visited)
i: 2 v: 1
no
i: 1 v: 2
i: 7 v: 2
no
i: 2 v: 7
i: 6 v: 7
no
i: 7 v: 6
i: 8 v: 7
no
i: 1 v: 8
i: 7 v: 8
i: 3 v: 1
no
i: 1 v: 3
i: 4 v: 3
no
i: 3 v: 4
i: 5 v: 4
no
i: 3 v: 5
i: 4 v: 5
i: 5 v: 3
i: 8 v: 1
当您访问节点 6 并引导您到达已访问过的节点 7 时,对
dfs(graph, 6, visited)
的调用就会结束。然而,有一个叫做 dfs(graph, 6, visited)
的东西,它是先前调用 for
的 dfs(graph, 8, visited)
循环。现在 for 循环将继续检查下一个项目,依此类推...