您好我正面临一个问题 -
给定一个无向图,源和目的地,编写代码以查找所有可能路径的不同节点的总数。
我有一个递归的解决方案,但我不确定它的正确性。
HashSet<String> mConnectedNodes;
Stack<String> stack;
public void findNodesOnAllConnectingPaths(Node startNode, Node endNode) {
stack.push(startNode.getValue());
// Check for the base case = finding destination node on path
if (startNode.getValue() == endNode.getValue()) {
Enumeration<String> currentElements = stack.elements();
while(currentElements.hasMoreElements()) {
mConnectedNodes.add(currentElements.nextElement());
}
stack.pop();
return;
}
//Recurse if any connected nodes aren't on the current path
ArrayList<Node> nodes = startNode.getConnectedNodes();
for (Node node : nodes) {
if (!stack.contains(node.getValue())) {
findNodesOnAllConnectingPaths(node, endNode);
}
}
stack.pop();
return;
}
请建议我可能失败的测试用例以及所有简单图形中所有简单路径的算法的良好来源。