图的邻接矩阵存储下的广度优先遍历

     图的邻接矩阵存储下的广度优先遍历:就像树的按层次遍历,需要借助队列实现。

    图的邻接矩阵存储下的广度优先遍历的实现代码如下:

/***
	 * 
	 * 邻接矩阵广度优先遍历
	 * 
	 */
	public void breadthFirstTravel()
	{
		System.out.println("邻接矩阵的广度优先遍历:");
		//初始化队列,LinkedList实现了Queue接口
		Queue<Integer> queue=new LinkedList<Integer>();
		//初始化各顶点的访问状态
		 int []visited=new int[mapping.length];
		 //从未访问顶点中任选一个顶点作为起始顶点
		 int unvisited=getUnvisited(visited);
		
		 while(unvisited>=0)
		 {
			 //起始顶点入队
			queue.add(unvisited);
			while(!queue.isEmpty())
			{
				//出队顶点并访问
				int index=queue.poll();
				if(visited[index]==1)
				{
					continue;
				}
				System.out.print(mapping[index]+" ");
				
				//标记被访问
				visited[index]=1;
				//遍历所有未被访问的邻接顶点,放入队列中
				for(int i=0;i<mapping.length;i++)
				{
					//不是自己、未被访问、可到达
					if(index!=i&&visited[i]==0&&matrix[index][i]>0)
					{
						queue.add(i);
					}
				}
			}
			//寻找下一个未被访问的节点
			  unvisited=getUnvisited(visited);
		 }
		      System.out.println();
	}
/**
 *        0
 *      /   \
 *      1   2
 *    /  \  / \
 *   3   4  5  6
 *    \   | |  /
 *        7
 */

《图的邻接矩阵存储下的广度优先遍历》

    原文作者:数据结构之图
    原文地址: https://blog.csdn.net/zuochao_2013/article/details/70747149
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞