代码中的问题,以查找所访问的不同节点的总数,考虑无向路径中的所有可能路径

时间:2013-10-11 09:31:16

标签: algorithm recursion graph

您好我正面临一个问题 -

给定一个无向图,源和目的地,编写代码以查找所有可能路径的不同节点的总数。

我有一个递归的解决方案,但我不确定它的正确性。

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;
}

请建议我可能失败的测试用例以及所有简单图形中所有简单路径的算法的良好来源。

0 个答案:

没有答案