【发布时间】:2012-03-07 23:33:57
【问题描述】:
请在下面找到我的 DFS 实现。
protected void DFS(String search) {
for(Tree<T> child : leafs) {
if(child.value.equals(search))
return;
else
child.DFS(search);
System.out.println(child.value);
}
}
目标是在找到其值在变量搜索中的节点时停止遍历。然而,上面的函数继续遍历树,甚至超出了声明的搜索节点。有人可以帮我修改上述功能吗?
谢谢。
编辑 1
protected boolean DFS(String anaphorKey) {
boolean found = false;
for(Tree<T> child : leafs) {
if(child.head.equals(anaphorKey))
return true;
found = child.DFS(anaphorKey);
if(found == true)
break;
System.out.println(child.head);
//System.out.println("anaphorKey: "+anaphorKey);
}
return found;
}
尝试实施给定的答案建议 (@SJuan76)。上面的实现没有按预期工作。您能否指出代码与建议的逻辑不符的地方?
【问题讨论】:
标签: java tree traversal depth-first-search