图的邻接表存储下的广度优先遍历:需要借助队列实现.
图的邻接表存储下的广度优先遍历实现代码如下:
/**
* 邻接表广度优先遍历
*
*/
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;
//遍历所有未被访问的邻接节点,放入队列
ListGraphN