【发布时间】:2020-07-31 18:10:50
【问题描述】:
鉴于下面的代码,我对操作顺序如何获得二叉搜索树的顺序遍历感到有些困惑。
BinarySearchTree.prototype.inOrder = function() {
if (this.root == null) {
return null;
} else {
var result = new Array();
function traverseInOrder(node) {
node.left && traverseInOrder(node.left);
result.push(node.data);
node.right && traverseInOrder(node.right);
}
traverseInOrder(this.root);
return result;
};
}
我试图添加一个调试器语句并跟随,但我迷失在里面:
function traverseInOrder(node) {
node.left && traverseInOrder(node.left); //step 1
result.push(node.data); //step 2
node.right && traverseInOrder(node.right); //step 3
}
node.left && traverseInOrder(node.left);(第 1 步)运行,然后再次运行,然后再次运行。最后,当没有 node.left 时,第 2 步被调用:result.push(node.data);
这是它失去我的部分。现在它尝试运行node.right && traverseInOrder(node.right),但没有node.right,而是没有退出该函数,而是返回到第2步result.push(node.data);。
这是从第 1 步中的多个递归调用中排队的吗?
【问题讨论】:
标签: javascript recursion binary-search-tree