无向图的深度遍历和广度遍历
时间: 2023-09-01 11:07:36 浏览: 52
无向图的深度遍历和广度遍历是图的两种基本遍历方式,它们可以帮助我们了解图的结构和关系。
深度遍历(DFS):从某个点出发,依次遍历其相邻的未访问过的节点,直到所有节点都被访问过为止。在遍历的过程中,需要使用栈来保存当前节点以及其相邻的节点。
广度遍历(BFS):从某个点出发,依次遍历其相邻的未访问过的节点,然后再遍历这些相邻节点的相邻节点,以此类推,直到所有节点都被访问过为止。在遍历的过程中,需要使用队列来保存当前节点以及其相邻的节点。
以下是无向图深度遍历和广度遍历的示例代码,其中graph为无向图的邻接表表示:
```python
# 深度优先遍历
def dfs(graph, start):
visited = set()
stack = [start]
while stack:
node = stack.pop()
if node not in visited:
visited.add(node)
stack.extend(graph[node] - visited)
return visited
# 广度优先遍历
def bfs(graph, start):
visited = set()
queue = [start]
while queue:
node = queue.pop(0)
if node not in visited:
visited.add(node)
queue.extend(graph[node] - visited)
return visited
```
需要注意的是,由于无向图没有方向性,所以在遍历的过程中需要使用visited集合来记录已经访问过的节点,避免死循环。