python通过递归实现图的深度优先遍历
时间: 2024-11-24 11:24:36 浏览: 4
Python实现深度优先搜索文件夹
Python通过递归可以轻松地实现图的深度优先遍历(Depth-First Search,DFS)。在深度优先遍历中,我们通常从一个起始节点开始,尽可能深地搜索一条路径,直到到达叶子节点,然后回溯到上一个节点并探索其他未访问的分支。以下是一个基本的递归函数示例:
```python
def dfs(graph, node, visited=None):
if visited is None:
visited = set()
# 将当前节点标记为已访问
visited.add(node)
print(f"Visiting node {node}")
# 遍历当前节点的所有邻居
for neighbor in graph[node]:
if neighbor not in visited:
# 对每个未访问的邻居递归调用dfs
dfs(graph, neighbor, visited)
# 示例图的数据结构(字典表示邻接列表)
graph = {
'A': ['B', 'C'],
'B': ['D', 'E'],
'C': ['F'],
'D': [],
'E': ['F'],
'F': []
}
# 从'A'开始进行深度优先遍历
dfs(graph, 'A')
```
在这个例子中,`graph`是一个邻接列表,`visited`用于记录已经访问过的节点。在每次递归调用时,我们会检查邻居是否已经被访问过,如果没有,就继续对其执行深度优先遍历。
阅读全文