找到图表中最长的路径

时间:2018-04-28 15:58:00

标签: java depth-first-search

我试图在图表中找到最长的路径,但是在返回最长的路径时我遇到了麻烦。我已经计算出递归并且可以跟随输出但是我无法获得正确的输出。该程序目前返回几个路径。

预计产量是从拉斯维加斯开始的:[拉斯维加斯,盐湖城,丹佛,海伦娜,温尼伯,德卢斯]

我的深度优先搜索方法:

public void dfs(City before, ArrayList<String> listOfCities){

    System.out.println(before +"-->"+ before.getAdjCities());

    List<City> neighbours = before.getAdjCities();
    before.setVisited(true);

    for (int i = 0; i < neighbours.size(); i++) {

        City n = neighbours.get(i);
        if(!n.visited){
            listOfCities.add(n.getCityName());
            System.out.println(i+ " Test: " + listOfCities.toString());

            dfs(n, listOfCities);
        }
    }
}

这是输出:

enter image description here

这是图表:

enter image description here

1 个答案:

答案 0 :(得分:2)

您的ListOfCities在搜索的所有分支中都是静态的,这就是为什么它最终会覆盖所有城市。每个城市的递归步骤应该比较每个邻居的DFS结果来构建结果。