为了账号安全,请及时绑定邮箱和手机立即绑定

如何在邻接矩阵的广度优先搜索中跟踪每个顶点的深度?

如何在邻接矩阵的广度优先搜索中跟踪每个顶点的深度?

白猪掌柜的 2023-09-27 14:20:39
我试图在邻接矩阵的广度优先搜索期间跟踪并打印每个节点的深度。public class steptwo {static String matrixFileName = "matrix.txt";static int[][] matrix;static int dimensions = 0;public static void main(String[] args) {    matrix = analyzeFile();    bft();}static void bft(){    Scanner input = new Scanner(System.in);    System.out.println("Please enter the source vertex, 0 to " + (matrix.length-1) + ".");    int source = input.nextInt()+1;    //Testing for valid vertex     while (source > matrix.length) {        System.out.println("Invalid vertex, please enter another from 0 to " + (matrix.length-1) + ".");        source = input.nextInt()+1;    }    input.close();    boolean[] visited = new boolean[matrix.length];    visited[source - 1] = true;    Queue<Integer> queue = new LinkedList<>();    queue.add(source);    int height = 0;    System.out.println("The breadth first order is: ");    while(!queue.isEmpty()){        System.out.print(queue.peek()-1 + " ---> H");        int x = queue.poll();        int i;        for(i = 0 ; i < matrix.length; i++){            if(matrix[x-1][i] == 1 && visited[i] == false){                queue.add(i+1);                visited[i] = true;                height++;            }        }        System.out.print(height + "\n");    }}我正在寻找这样格式的输出Please enter the source vertex, 0 to 7.0The breadth first order is: 0 ---> H51 ---> H62 ---> H63 ---> H64 ---> H75 ---> H76 ---> H77 ---> H7我确信我只是错过了一些愚蠢的东西,但我不知所措。我需要跟踪访问的每个顶点的深度。邻接矩阵已成功从 .txt 文件中读取,并且在我的其他方法中运行良好。我可以是任意大小的简单,也可以不是。任何意见表示赞赏,谢谢。如果需要更多信息,请告诉我。
查看完整描述

1 回答

?
阿晨1998

TA贡献2037条经验 获得超6个赞

用 N 个整数创建数组“深度”,其中 N 是节点数并将其传递到 BFS

在 BFS 中,假设您将顶点“u”出列,您会发现它的邻居,并且对于“u”的每个新发现的邻居“v”,你设置depth[v]=depth[u] + 1:


if(matrix[x-1][i] == 1 && visited[i] == false){

                queue.add(i+1);

                visited[i] = true;

                depth[i] = depth[x]+1;

            }  


查看完整回答
反对 回复 2023-09-27
  • 1 回答
  • 0 关注
  • 89 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信