使用python,利用字典实现图的广度优先遍历
时间: 2023-06-15 10:07:16 浏览: 117
图的广度优先遍历
4星 · 用户满意度95%
可以使用Python中的队列模块queue来实现广度优先遍历。
首先,我们需要定义一个图,使用字典来存储图的信息。例如:
```
graph = {
'A': ['B', 'C'],
'B': ['D', 'E'],
'C': ['F'],
'D': [],
'E': ['F'],
'F': []
}
```
上面的代码定义了一个有向无环图,节点A有两个邻居节点B和C,节点B有两个邻居节点D和E,以此类推。
接下来,我们可以使用队列来实现广度优先遍历。首先,将起始节点加入队列中,然后进行循环,直到队列为空。在循环过程中,取出队列中的第一个节点,将其邻居节点加入队列中,并标记已经访问过的节点。这样,就可以按层次顺序遍历整个图了。
下面是实现广度优先遍历的代码:
```
from queue import Queue
def bfs(graph, start):
visited = set()
q = Queue()
q.put(start)
visited.add(start)
while not q.empty():
node = q.get()
print(node)
neighbors = graph[node]
for neighbor in neighbors:
if neighbor not in visited:
q.put(neighbor)
visited.add(neighbor)
```
使用上面的代码,我们可以对上面定义的图进行广度优先遍历:
```
graph = {
'A': ['B', 'C'],
'B': ['D', 'E'],
'C': ['F'],
'D': [],
'E': ['F'],
'F': []
}
bfs(graph, 'A')
```
输出结果为:
```
A
B
C
D
E
F
```
阅读全文