用python实现BFS算法
时间: 2023-10-12 13:18:16 浏览: 92
以下是使用Python实现BFS算法的示例代码:
```python
from collections import deque
# 定义BFS函数
def bfs(graph, start):
visited = set() # 用集合记录已访问的节点
queue = deque([start]) # 初始化队列
visited.add(start) # 将起始节点标记为已访问
while queue: # 队列不为空时循环
node = queue.popleft() # 取出队列的第一个节点
print(node, end=' ')
for neighbor in graph[node]: # 遍历当前节点的邻居节点
if neighbor not in visited: # 如果邻居节点未被访问过
visited.add(neighbor) # 标记为已访问
queue.append(neighbor) # 将邻居节点加入队列
# 示例图
graph = {
'A': ['B', 'C'],
'B': ['D'],
'C': ['E'],
'D': ['F'],
'E': [],
'F': []
}
# 从节点A开始进行BFS遍历
bfs(graph, 'A')
```
输出结果为:A B C D E F
以上代码中,使用了Python内置的`deque`双端队列来实现队列,使用`set`集合来记录已访问的节点。首先将起始节点加入队列和集合中,然后进行循环,每次从队列的左边取出一个节点进行访问,并遍历其邻居节点。如果邻居节点未被访问过,则标记为已访问并加入队列中。由于队列的特性是先进先出,所以可以保证广度优先搜索的顺序。
阅读全文