【发布时间】:2013-11-19 18:49:27
【问题描述】:
我现在正在寻找一种方法,该方法为我提供了给定树的所有路径。想象一下下面的树:
A
B
C
D
E
F
G
现在我想将所有路径作为单独的字符串:
- AB
- ACDE
- ACF
- AG
---------------更新------
正如 cmets 中已经提到的,我正在寻找所有的树路径而不是子树。 我找到了以下解决方案,但我不确定它是否会是一个好的解决方案:
private ArrayList<ArrayList<String>> abstractProperties;
........
getTreePath(abstractHw, new ArrayList<String>());
.......
private void getTreePath(Node hw, ArrayList<String> path) {
path.add(hw.getName());
if (hw.getNodes().isEmpty()) {
abstractProperties.add(path);
} else {
for (Node subHw : hw.Nodes()) {
getTreePath(subHw, new ArrayList<String>(path));
}
}
}
你怎么看?
【问题讨论】:
-
@ZongZhengLi 这真的不是重复的。 ph09:你对树有什么表示?
-
不,根本不是那个问题的重复。
-
@Cruncher 是的,不再是(在海德的编辑之后)。最初,“树”被指定为“A B C D E F G”。
-
“子树”到底是什么意思?从您的示例中,您的意思似乎是从根到叶子的每条路径。如果这是您的意思,那么这与遍历所有叶节点(以任何有意义的顺序)并输出到该叶的完整路径相同。如果这不是您想要的,请澄清问题。
标签: java recursion tree traversal subtree