图的遍历(Python实现)
时间: 2023-08-27 20:20:11 浏览: 36
图的遍历分为深度优先遍历和广度优先遍历两种。
深度优先遍历(DFS):
1. 从起始点开始,访问该点并将其标记为已访问。
2. 对于该点的每个未访问邻居,递归访问。
3. 当没有未访问的邻居时,回溯到上一个访问的点,重复步骤2。
Python代码实现:
```
def dfs(graph, start, visited=None):
if visited is None:
visited = set()
visited.add(start)
print(start)
for next in graph[start] - visited:
dfs(graph, next, visited)
return visited
```
广度优先遍历(BFS):
1. 从起始点开始,将该点加入队列。
2. 取出队列的第一个点,访问该点并将其标记为已访问。
3. 将该点的所有未访问邻居加入队列。
4. 回到步骤2,直到队列为空。
Python代码实现:
```
from collections import deque
def bfs(graph, start):
visited, queue = set(), deque([start])
visited.add(start)
while queue:
vertex = queue.popleft()
print(vertex)
for neighbor in graph[vertex]:
if neighbor not in visited:
visited.add(neighbor)
queue.append(neighbor)
```
其中,graph为图的邻接表表示。