BFS的遍历

BFS遍历邻接矩阵和邻接表的代码很相似,因此就写一个的。


邻接矩阵:

bool visited[max_veres];//标志顶点访问与否

void BFSTraverse(Graph G)
{
	int i,j;
	Queue Q;
	for(i = 0; i < G.vertexs; i++)
	{
		visited[i] = false;	//初始化为都没访问过的
	}
	InitQueue(&Q);//初始化一个队列
	for(i = 0; i < G.vertexs; i++)
	{
		if(!visited[i])//如果没访问过这个顶点
		{
			visited[i] = true;//设置为已经访问过这个顶点
			Visit(i);//访问的具体操作
			EnQueue(&Q,i);//让最近访问的顶点进入队列
			while(!EmptyQueue(Q))
			{
				DeQueue(&Q,&i);//使队头的元素出队,并把下标值给i
				//以下代码为访问跟i有边的顶点
				for(j = 0; j < G.vertexs; j++)
				{
					if(G.arc[i][[j] == 1 && !visited[j])
					{
						visited[j] = true;
						Visit(j);
						EnQueue(&Q,j);//把所有与i的邻接点都入队
					}
				}
			}
		}
	}	
}

仔细一看,这不就是树的层序遍历吗??


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值