深度优先搜索(DFS)实现中neighbour变量取值来源相关疑问
DFS代码中neighbour变量的取值说明
你代码里的neighbour变量取值逻辑可以分三步理解:
- 你定义的
graph是邻接表结构,用来存储图的连接关系:字典的每个key对应图的一个节点,key对应的value是列表,存储了和当前节点直接连通的所有邻接节点。 - DFS函数运行时,传入的第三个参数
node是当前正在处理的节点,graph[node]就是取出当前节点对应的邻接节点列表。 for neighbour in graph[node]:是Python的for遍历逻辑:每次循环都会从graph[node]这个列表里按顺序取下一个元素,赋值给neighbour变量,直到列表所有元素都被遍历完为止。
举实际运行的示例:
首次调用DFS(visited,graph,'5')时,当前node为'5',graph['5']取值为['3','7']:
- 第一次循环:
neighbour被赋值为'3',触发递归调用DFS(visited, graph, '3')- 等
'3'的整条递归分支全部执行完回到当前层后,第二次循环:neighbour被赋值为'7',触发递归调用DFS(visited, graph, '7')- 列表所有元素遍历完成后,循环结束
如果当前节点没有邻接节点(比如node为'2'时,graph['2']是空列表[]),这个for循环不会执行,函数会直接返回上一层调用。
内容的提问来源于stack exchange,提问作者lMysth
相关产品推荐
相关产品推荐

