非连通图邻接矩阵的深度优先遍历的代码
时间: 2024-12-28 10:33:57 浏览: 4
非连通图的深度优先搜索(DFS)在邻接矩阵表示下需要稍微处理一下,因为我们需要检查每个顶点是否已经被访问过,并确保找到所有连通分量。以下是使用Python的一个基本示例:
```python
def dfs(graph, start, visited=None):
if visited is None:
visited = set()
visited.add(start)
print(f"Visiting node {start}")
# 对当前节点的所有邻居进行递归遍历
for neighbor in graph[start]:
if neighbor not in visited:
dfs(graph, neighbor, visited)
# 假设我们的邻接矩阵 graph 是一个二维列表,比如 [[0, 1], [1, 0, 1], [0, 1]]
graph = [
[0, 1],
[1, 0, 1],
[0, 1]
]
# 分别对每一个连通分量的起始节点进行遍历
components = find_connected_components(graph) # 你需要提供一个find_connected_components函数来找出所有的起始节点
for component in components:
dfs(graph, component[0]) # 使用第一个未访问过的节点作为起始点
```
在这个例子中,`find_connected_components`函数负责查找并返回所有连通分量的起始节点。由于题目没有给出具体的算法,我们假设它已经实现了这个功能。
阅读全文