javascript - 返回后该方法又是谁调用了它自己?
问题描述
在最后一个方法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, []));
解决方案
推荐阅读
- eclipse - 如何使用 Eclipse 调试 Kubernetes 部署的服务
- python - django.db.utils.IntegrityError:NOT NULL 约束失败:new__score_comment.post_id
- angular - 需要传递另一个值来更改事件
- docker - Bitbucket 管道 docker 图像标签在运行期间更改为图像摘要?
- reactjs - Docusaurus v2 项目的文档链接已损坏
- javascript - 如何在角度 6 的编辑模式下动态地在 ngFor 表中添加多行
- yocto - EXCLUDE_FROM_SHLIBS 的目的是什么
- python - 如何使用列表列表添加列表,以便每个索引都是包含元素的列表和 python 中的列表
- oracle - 无法从 Windows IME 将 Japanase kanji 输入到 Windows 10 中的 oracle 12c 数据库 sqlplus
- google-chrome - Flutter 程序在 Chrome 上运行正常,但在 Web 服务器上无法正常运行