繁体   English   中英

深度优先搜索以查找节点之间的所有路径问题

[英]Depth First Search to find all paths between nodes issue

我一直在尝试解决这个深度优先搜索问题,但我无法弄清楚。 我想打印所有路径,但不知何故它只打印了一些路径。 找了这么久才知道这里的错误:

  void printAllPathsUtil(Vertex v, Vertex d, ArrayList<Vertex> path){

        v.state = VISITED;
        path.add(v);

        if (v == d) {
            for (Vertex p : path) {
                System.out.print("Print: " + p.value + " ");
            }
            System.out.println();
        }
        else {
            for (Vertex city : v.outboundCity){

                if (city.state == UNVISITED) {

                    printAllPathsUtil(city, d, path);
                }
            }
        }
        path.remove(v);
        v.state = UNVISITED;
    }


    void printAllPaths(Vertex v, Vertex u){
        clearStates();
        ArrayList<Vertex> path = new ArrayList<>();
        printAllPathsUtil(v, u, path);
    }

顶点类是这样的:

public class Vertex{
String value;

Vertex previous = null;
int minDistance = Integer.MAX_VALUE;

List<Vertex> inboundCity;
List<Vertex> outboundCity;
State state;
}

我认为你应该在loop有这两行:

path.remove(v);
v.state = UNVISITED;

您应该在递归终止后立即从路径中删除顶点并“取消访问”它们,而不是在结束循环时

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM