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

来源:互联网 发布:淘宝网鞋子帆布鞋 编辑:程序博客网 时间:2024/06/10 07:17

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

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

/** * 邻接表广度优先遍历 *  */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();}

   

0 0
原创粉丝点击