基于邻接矩阵的深度优先遍历
时间: 2023-10-16 16:28:23 浏览: 96
深度优先遍历(邻接矩阵)实现
邻接矩阵是一种表示图的常见方法。在邻接矩阵中,每个节点都对应着矩阵中的一个行和列,矩阵中的值表示两个节点之间是否有边相连。如果有,那么值为1,否则为0。
深度优先遍历是一种遍历图的算法,它从一个起始节点开始,先访问它的一个邻居节点,再访问邻居节点的邻居节点,以此类推,直到遍历完整个图或者找到目标节点。
邻接矩阵的深度优先遍历算法可以通过递归实现。具体步骤如下:
1. 从起始节点开始遍历,将该节点标记为已访问。
2. 遍历该节点的所有邻居节点,如果邻居节点未被访问,则递归调用该节点进行遍历。
3. 重复步骤2,直到所有未被访问的邻居节点都被遍历完。
以下是邻接矩阵的深度优先遍历的示例代码:
```
#include <iostream>
#include <vector>
using namespace std;
const int MAXN = 1005;
int n, m;
int g[MAXN][MAXN];
bool vis[MAXN];
void dfs(int u) {
vis[u] = true;
cout << u << " ";
for (int i = 1; i <= n; i++) {
if (g[u][i] && !vis[i]) {
dfs(i);
}
}
}
int main() {
cin >> n >> m;
for (int i = 1; i <= m; i++) {
int u, v;
cin >> u >> v;
g[u][v] = 1;
g[v][u] = 1;
}
dfs(1);
return 0;
}
```
其中,n表示节点个数,m表示边的个数,g[i][j]表示节点i和节点j之间是否有边相连。vis[i]表示节点i是否被访问过。dfs函数表示从节点u开始进行深度优先遍历。
阅读全文