DFS算法继续递归调用,不返回

时间:2016-10-18 19:27:25

标签: javascript algorithm recursion

我在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);
    }
  }

1 个答案:

答案 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);
    }
}