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

来源:互联网 发布:沧州管家婆软件总代理 编辑:程序博客网 时间:2024/05/18 21:38

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

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

/*** *  * 邻接矩阵广度优先遍历 *  */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 */


0 0
原创粉丝点击