用于邻接矩阵的Java DFS

时间:2018-03-20 23:05:36

标签: java depth-first-search

我正在开发一个项目,为给定的邻接矩阵实现DFS。我有正确的文件读取,我有程序输出首先遇到的顶点的列表,但是,我没有得到正确的列表。我得到1 2 6 5 7 3 4 8但我需要得到1 2 6 7 4 3 5 8.我不确定我哪里出错,但任何建议都会有所帮助。下面我附加了代码部分输出遇到的顶点和带有邻接矩阵的文件。

输出代码:

public static void dfs(int vertex, boolean[] visitArray, ArrayList<Integer> DFSvertexList, ArrayList<Integer> DFSdeadEndList, int[][] DFStreeEdgeGraph, ArrayList<Integer> vertexList, ArrayList<Integer> iList, boolean[] visitArray2){
    int ver = 0;
    DFSvertexList.add(vertex);
    visitArray[vertex] = true;

    for(int i = 0; i <= dim-1; i++){
        if(graph[vertex][i] == 1){
            if(!visitArray[i]){
                ver = i;
                DFStreeEdgeGraph[vertex][i] = 1;
                dfs(i, visitArray, DFSvertexList, DFSdeadEndList, DFStreeEdgeGraph, vertexList, iList, visitArray2);
                DFSdeadEndList.add(i);
            }
            else if(i >= vertex && i != ver){
                vertexList.add(vertex+1);
                iList.add(i+1);
            }

        }
    }               
}

这是邻接矩阵:

0 1 0 0 1 1 0 0
1 0 0 0 0 1 1 0
0 0 0 1 0 0 1 0
0 0 1 0 0 0 0 1
1 0 0 0 0 1 0 0
1 1 0 0 1 0 0 0
0 1 1 0 0 0 0 1
0 0 0 1 0 0 1 0

如果需要更多代码,请告诉我。

0 个答案:

没有答案