我有一棵树。此树中的所有节点都具有一些true / false值,一个元素和父/子指针。此树中的一个元素将true / false值设置为true。我想找到从根到这个唯一节点的路径(元素序列)。所以,如果我的树看起来像这样:
A
/ \
B C
/ \
D E
/ \
F G
/ \
H I
特殊节点是H,我的算法将返回字符串“ACEGH”。我已经使用DFS实现了这一点。但是,我当前的算法是从不正确的路径添加节点的元素。所以我现在的算法将返回:“ABDCEFGHI”。
private String dfs(Node node, String path) {
if(node.special){
return key;
}
for(Node n: node.children){
if(n != null){
path = path + n.element;
dfs(n, path);
}
}
return null;
}
答案 0 :(得分:0)
如果n.element
返回dfs
(解释为表示尚未找到解决方案路径),则需要从路径中删除 null
。在dfs
返回非空值时,您还应该停止检查子项。
要使其正常工作,dfs
一旦找到路径就会返回非null值,无论它处于什么级别。