图的广度优先遍历 python实现
时间: 2023-11-06 16:16:52 浏览: 84
图的广度优先遍历
4星 · 用户满意度95%
以下是 Python 实现的图的广度优先遍历算法:
```python
from collections import deque
def bfs(graph, start):
visited = set() # 用集合记录已经遍历过的节点
queue = deque([start]) # 使用双端队列存储下一步要遍历的节点
while queue:
node = queue.popleft() # 取出队列头部的节点
if node not in visited:
visited.add(node) # 将节点标记为已访问
print(node) # 输出节点值
neighbors = graph[node] # 获取当前节点的邻居节点
for neighbor in neighbors:
if neighbor not in visited:
queue.append(neighbor) # 将未访问的邻居节点加入队列
```
其中 `graph` 参数是以字典形式表示的图,例如:
```python
graph = {
'A': ['B', 'C'],
'B': ['A', 'D', 'E'],
'C': ['A', 'F'],
'D': ['B'],
'E': ['B', 'F'],
'F': ['C', 'E']
}
```
`start` 参数是遍历的起始节点。例如,要从节点 A 开始遍历,可以调用 `bfs(graph, 'A')` 函数。
阅读全文