图:遍历

本文详细介绍了图的遍历方法,包括深度优先搜索(DFS)和广度优先搜索(BFS)。DFS是一种探查和回溯的过程,而BFS则是逐层遍历。文中对两种算法的基本过程、代码实现以及复杂度分析进行了阐述,帮助读者理解这两种图的遍历方法。
摘要由CSDN通过智能技术生成

图:遍历

深度优先搜索(DFS)

基本过程

深度优先搜索是一个不断探查和回溯的过程。在探查的每一步,算法都有一个当前顶点。最初的当前顶点,就是指定的起始顶点。每一步探查的过程中,首先对当前顶点v进行访问,并且设置标志visited[n]=true。截止在v的所有邻接顶点中,找出尚未访问的一个,将其作为下一步探查的当前顶点。倘若当前顶点的所有邻接顶点都已被访问过,则退回一步,将前一步所访问的等到取出,当做探查的当前顶点。重复上述的步骤,知道最初指定的起始顶点的所有邻接顶点都被访问到,此时连通图中的所有顶点也必然都被访问过了。

代码实现

template<class T,class E>
void DFS(Graph<T, E>&G, const T&v) {
   
	//从顶点v出发,对图G进行深度优先遍历的主过程
	int i, loc, n = G.NumOfVertices();//取图中顶点个数
	bool *visited = new bool[n];//创建辅助数组
	for (i = 0; i < n; i++)visited[i] = false;//辅助数组初始化
	loc = G.getVertexPos(v);
	DFS(G, loc, visited);//从低到0开始深度优先搜索
	delete[]visited;
}
template<class T,class E>
void DFS(Graph<T, E>&G, int v, bool visited[])<
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值