广度优先遍历python
时间: 2023-11-11 21:00:42 浏览: 102
广度优先遍历(BFS)是一种图形搜索算法,它从根节点开始,逐层遍历整张图,按照距离从近到远的顺序依次访问节点。在Python中,可以使用队列来实现BFS算法。具体实现步骤如下:
1. 创建一个空队列,并将根节点入队。
2. 当队列不为空时,取出队首节点,并将其所有未访问过的邻居节点入队。
3. 标记当前节点为已访问。
4. 重复步骤2和3,直到队列为空。
下面是一个简单的Python代码实现:
```python
from collections import deque
def bfs(graph, root):
visited = set() # 用集合记录已访问的节点
queue = deque([root]) # 创建一个空队列,并将根节点入队
visited.add(root) # 标记根节点为已访问
while queue: # 当队列不为空时
node = queue.popleft() # 取出队首节点
print(node) # 访问当前节点
for neighbor in graph[node]: # 遍历当前节点的所有邻居节点
if neighbor not in visited: # 如果邻居节点未被访问过
visited.add(neighbor) # 标记邻居节点为已访问
queue.append(neighbor) # 将邻居节点入队
# 测试代码
graph = {
'A': ['B', 'C'],
'B': ['A', 'D', 'E'],
'C': ['A', 'F'],
'D': ['B'],
'E': ['B', 'F'],
'F': ['C', 'E']
}
bfs(graph, 'A')
```
输出结果为:
```
A
B
C
D
E
F
```
阅读全文