我在JavaScript中编写DFS,算法找到了节点,但return语句简单地结束了当前的递归调用,并继续向前继续搜索树。
dfs(node, target = 0) {
if (node) {
if (node.data === target) {
return node;
}
console.log(node.data);
this.dfs(node.left, target);
this.dfs(node.right, target);
}
}
答案 0 :(得分:1)
你需要在递归调用中返回recursice调用的结果(听起来像是重言式)。在这种情况下,我假设结果是一个节点或undefined
,它首先尝试节点本身,然后是左侧部分,最后是右侧部分。
dfs(node, target = 0) {
if (node) {
if (node.data === target) {
return node;
}
console.log(node.data);
return this.dfs(node.left, target) || this.dfs(node.right, target);
}
}