【发布时间】:2015-05-09 12:39:20
【问题描述】:
我有一个无向图,想知道一个节点是否连接到另一个节点?
例如
0 1 0
1 0 1
0 1 0
在这个节点 1 连接到节点 3(因为有一条从 1 到 2 和 2 到 3 的路径,因此 1-3 是连接的)
我编写了使用 DFS 的程序,但我无法弄清楚为什么会给出错误的结果。
我不想保留任何全局变量并希望我的方法返回真实的 id 节点是使用递归程序连接的
public static boolean isConnectedGraph(int[][] graph, int start, int end,
int visited[]) {
visited[start] = 1;
if (graph[start][end] == 1) {
System.out.println("Yes connected....");
return true;
}
for (int i = 0; i < graph[0].length; i++) {
if (graph[start][i] == 1 && visited[i] == 0) {
visited[i] =1;
isConnectedGraph(graph, i, end, visited);
}
}
return false;
}
【问题讨论】:
-
你为什么要递归调用
isConnectedGraph?
标签: java algorithm recursion graph depth-first-search