Java 如何检查图形是否连接

Java 如何检查图形是否连接,java,algorithm,recursion,graph,depth-first-search,Java,Algorithm,Recursion,Graph,Depth First Search,我有一个无向图,想知道一个节点是否连接到另一个节点 比如说 0 1 0 1 0 1 0 1 0 在此情况下,节点1连接到节点3(因为存在从1到2和2到3的路径,因此连接1-3) 我已经编写了使用DFS的程序,但我不知道为什么会给出错误的结果 我不想保留任何全局变量,我希望我的方法返回真正的id节点,它们使用递归程序连接 public static boolean isConnectedGraph(int[][]图,int开始,int结束, int已访问[]){ 访问[开始]=1; 如果(图形

我有一个无向图,想知道一个节点是否连接到另一个节点

比如说

0 1 0
1 0 1 
0 1 0
在此情况下,节点1连接到节点3(因为存在从1到2和2到3的路径,因此连接1-3)

我已经编写了使用DFS的程序,但我不知道为什么会给出错误的结果

我不想保留任何全局变量,我希望我的方法返回真正的id节点,它们使用递归程序连接

public static boolean isConnectedGraph(int[][]图,int开始,int结束,
int已访问[]){
访问[开始]=1;
如果(图形[开始][结束]==1){
System.out.println(“是连接的…”);
返回true;
}
对于(int i=0;i
对递归调用的结果不做任何处理
isConnectedGraph(graph,i,end,visted)。您应该将其分配给一个变量,如果它是
true
,则返回
true

将主循环更改为类似以下内容:

for (int i = 0; i < graph[0].length; i++) {
    if (graph[start][i] == 1 && visited[i] == 0) {
        visited[i] =1;
        if (isConnectedGraph(graph, i, end, visited)) return true;

    }
}
for(int i=0;i
你为什么要递归调用
isConnectedGraph
?谢谢,阿米特,我错误地给出了错误的代码,现在已编辑请检查,但我仍然是说,你能写得更好吗code@ArvindEdited,旧答案中也提到了这个问题,但我现在把重点放在它上面了。@Arvind是的,看看递归调用,它现在处于if状态
for (int i = 0; i < graph[0].length; i++) {
    if (graph[start][i] == 1 && visited[i] == 0) {
        visited[i] =1;
        if (isConnectedGraph(graph, i, end, visited)) return true;

    }
}