图的遍历之深度优先遍历

思路:定义一个递归函数DFS,从源点开始进入DFS,每碰到当前未访问过的点就进入DFS,直到所有点都访问完

示例代码:

/*
无向图的深度优先遍历
*/
#include<iostream>
#define N 1001
using namespace std;
int visited[N];
int n,m;
int G[N][N];
void dfs(int x)
{
	int i;
	visited[x] = 1;
	cout<<x<<" ";
	
	for(i = 1; i <= n; i++)
	{
		//  对当前点x的所有未访问过的邻接点
		if(!visited[i] && G[x][i] == 1)
		{
			dfs(i);
		}
	}
}
int main()
{
	int i;
	cin>>n>>m;
	for(i = 1; i <= m; i++)
	{
		int a,b;
		cin>>a>>b;
		// 表示顶点a、b之间存在边
		G[a][b] = G[b][a] = 1;
	}
	dfs(1);
	return 0;
}
    原文作者:数据结构之图
    原文地址: https://blog.csdn.net/csdn_blog_lcl/article/details/53482624
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞