首页 > 解决方案 > 返回后该方法又是谁调用了它自己?

问题描述

在最后一个方法dfs()中,在节点为'1'之后,两个if语句将不会进入,它将一直到return语句,没有任何再次调用该方法的行,!!!但它再次调用它自己!!!那是谁来的?

我正在使用 JS。

这是带有在线编译器的代码:https ://repl.it/repls/EnchantingSpanishBlockchain

class Node {
  constructor(value) {
    this.left = null;
    this.right = null;
    this.value = value;
  }
}
class BinarySearchTree {
  constructor() {
    this.root = null;
  }
  insert(value) {
    const newNode = new Node(value);
    if (this.root === null) {
      this.root = newNode;
    } else {
      let currentNode = this.root;
      while (true) {
        if (value < currentNode.value) {
          //Left
          if (!currentNode.left) {
            currentNode.left = newNode;
            return this;
          }
          currentNode = currentNode.left;
        } else {
          //Right
          if (!currentNode.right) {
            currentNode.right = newNode;
            return this;
          }
          currentNode = currentNode.right;
        }
      }
    }
  }
}

function dfs(node, list) {
  if (node.left) {
    dfs(node.left, list);
  }
  if (node.right) {
    dfs(node.right, list);
  }
  list.push(node.value);
  return list;
}
//      9
//  4      20
//1   6  15   170  
const tree = new BinarySearchTree();
tree.insert(9)
tree.insert(4)
tree.insert(6)
tree.insert(20)
tree.insert(170)
tree.insert(15)
tree.insert(1)
//DFTPostOrder
console.log(dfs(tree.root, []));

标签: javascriptrecursiondepth-first-search

解决方案


推荐阅读