javascript - 使用递归打印 BST 的值 - javascript

标签 javascript

我试图通过这段 BST 代码更好地理解 Javascript 中的递归。我可以使用递归通过两种方法打印出 BST 的值,但我不知道如何用一种方法完成这一切。

如何组合

BinarySearchTree.prototype.dfs = function(node) {
  if (node) {
    console.log(node.val);
    this.dfs(node.left);
    this.dfs(node.right);
  }
}

BinarySearchTree.prototype.depthFirstTraversal = function() {
  let current = this.root;
  this.dfs(current);
}

合并成一个函数?我一直在努力

BinarySearchTree.prototype.sameFunction = function(node = null) {
    // if node is null use this.root
    let current = node || this.root;
 
    if (current) {
        console.log(current.val);
        this.sameFunction(current.left);
        this.sameFunction(current.right);
    }
}

http://jsfiddle.net/rj2tyd4L/

最佳答案

使用第二个参数 isRoot 并将其默认值设置为 true 怎么样?

BinarySearchTree.prototype.sameFunction = function(node = null, isRoot = true) {
  let current = isRoot ? this.root : node;
  if (current) {
    console.log(current.val);
    this.sameFunction(current.left, false);
    this.sameFunction(current.right, false);
  }
}

http://jsfiddle.net/fez1jtsx/

这使得tree.sameFunction()相当于调用tree.depthFirstTraversal()

关于javascript - 使用递归打印 BST 的值 - javascript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52995129/

相关文章:

javascript - Redux 中间件异步函数

javascript - 如何让 Intersection Observer 只将 div 放在屏幕上一次,并且在用户滚动离开时不将其删除?

javascript 在 1 秒后打印一个值

javascript - 返回 false 时表单仍然提交(看不到错误)

javascript - 当我在 Vue for NativeScript 中使用 v-for 时,函数 focus() 停止工作

javascript - 如果满足条件则发送ajax GET请求

javascript - 如何在函数内部的全局上下文中定义javascript中的函数?

javascript - nodejs async/await try/catch jest 测试在不应该通过的时候通过

javascript - 链接到 Windows 应用商店中的应用程序

javascript - 如何使用索引动态更新javascript中的数组?