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

     图的邻接表存储下的广度优先遍历:需要借助队列实现.

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

/**
	 * 邻接表广度优先遍历
	 * 
	 */
	public void breadFirstTravel()
	{
		System.out.println("邻接表广度优先遍历为:");
		//初始化队列
		Queue <Integer>queue=new LinkedList<Integer>();
		//初始化各顶点的访问状态
		int[] visited=new int[nodes.length];
				
		//从未访问顶点中任选一个顶点作为起始顶点
	    int unvisited=getUnvisited(visited);
	    
	    while(unvisited>=0)
	    {
	    	//起始顶点入队
	    	queue.add(unvisited);
	    	
	    	while(!queue.isEmpty())
	    	{
	    		//出队顶点并访问
	    		int index=queue.poll();
	    		System.out.println(nodes[index].value+" ");
	    		//标记被访问
	    		visited[index]=1;
	    		//遍历所有未被访问的邻接节点,放入队列
	    		ListGraphNode node=nodes[index].next;
	    		while(node!=null)
	    		{
	    			if(visited[node.index]==0)
	    			{
	    				queue.add(node.index);
	    			}
	    			//寻找下一个节点
	    			node=node.next;
	    		}
	    		
	    	}
	    	unvisited=getUnvisited(visited);
	    }
		   System.out.println();
		
	}

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

   

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