1

嗨我面临一个问题 -

给定一个无向图、源和目标,编写代码找出访问的不同节点的总数,考虑所有可能的路径。

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

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

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

4

0 回答 0