java - 如何遍历图表?

标签 java algorithm

我有下面的树

     1
    2 3
   4 5 6
  7 8 9 0

现在我想遍历树中所有可能的路径。总是可以从下一行移动到相邻的数字。例如

1 2 4 71 2 5 8

有什么提示是最好的方法吗?我正在寻找一般提示,但在我的实现中,每一行都有一个 ArrayList。

最佳答案

我怀疑使用递归是最简单的方法。

有点像

public static void visit(List<List<Integer>> tree, Visitor<List<Integer>> visitor) {
    visit0(tree, visitor, Collections.<Integer>emptyList());
}

private static void visit0(List<List<Integer>> tree, 
                           Visitor<List<Integer>> visitor, List<Integer> list) {
    if (tree.isEmpty()) {
       visitor.onList(list);
       return;
    }

    List<List<Integer>> tree2 = tree.subList(1, tree.size() - 1);
    List<Integer> ints = new ArrayList<Integer>(list);
    ints.add(0); // dummy entry.
    for(int n: tree.get(0)) {
        ints.set(ints.size()-1, n);
        visit0(tree2, visitor, ints);
    }
}

关于java - 如何遍历图表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5789580/

相关文章:

java - 是否可以分离 Hibernate 实体,以便对象的更改不会自动保存到数据库中?

python - python 的 NetworkX 中的最低共同祖先

java - 当重写方法 say(),然后运行程序时,我没有得到预期打印的内容

java - 如何减少 MainActivity/外包 UI 代码的大小

java - 需要输入两次 'N'才能显示相关信息

java - 无法一次加载多个 osm 文件

algorithm - 轴对齐矩形的交集区域

algorithm - haskell NB : ‘Edge’ is a non-injective type family

ruby - 计算数组中连续整数元素的数量

c++ - 具有实时过程的银行家算法