python 实现图广度遍历
时间: 2024-01-01 09:03:59 浏览: 69
可以使用队列来实现图的广度遍历。具体步骤如下:
1. 将起始节点加入队列中
2. 当队列不为空时,取出队首节点,遍历它的所有邻居节点
3. 对于每个邻居节点,如果它没有被访问过,则将其加入队列中,并标记为已访问
4. 重复步骤2和3,直到队列为空
下面是一个示例代码实现:
```python
from collections import deque
def bfs(graph, start):
visited = set() # 用集合记录已经访问的节点
queue = deque([start]) # 将起始节点加入队列中
visited.add(start)
while queue:
node = queue.popleft()
print(node)
for neighbor in graph[node]:
if neighbor not in visited:
visited.add(neighbor)
queue.append(neighbor)
```
其中,`graph` 表示图,使用字典表示;`start` 表示起始节点。例如,对于以下图:
```python
graph = {
'A': ['B', 'C'],
'B': ['A', 'D', 'E'],
'C': ['A', 'F'],
'D': ['B'],
'E': ['B', 'F'],
'F': ['C', 'E']
}
```
可以使用以下代码进行遍历:
```python
bfs(graph, 'A')
```
输出:
```
A
B
C
D
E
F
```
阅读全文