用于生成BST(我的函数将其作为输入)的数组:[38,95,70,5,10,148,93]

到目前为止,该函数只返回[5,10],而不是按排序顺序返回所有元素.这种做法有何不妥?

function sortedArrayFromBST(tree,node,outputArray){
    outputArray=outputArray||[]
    // console.log(tree)
    node=node||tree.root
    console.log(node)
    let left=node.left
    console.log(left)
    let right=node.right
    console.log(right)
    if(left ==null){
        outputArray.push(node.data)
    }else{
        return sortedArrayFromBST(tree,left,  outputArray) 
    }
    
    if(right==null){
        return outputArray
    } else{
        return sortedArrayFromBST(tree, right, outputArray)
    }
 
}  

推荐答案

在递归函数的核心,您希望执行类似以下的操作:

if (node === null) // base case
    return
if (node.left !== null)
    sortedArrayFromBST(node.left, outputArray)
outputArray.push(node.val)
if (node.right !== null)
    sortedArrayFromBST(node.right, outputArray)

return outputArray

你现在的情况不是很好.

Javascript相关问答推荐

JavaScript寻求、寻求和时间更新事件||Mux

自定义帖子类型帖子未显示在网站上

如何expose 像React在onChange、onClick等中所做的那样的参数?

为什么有些库公开了执行相同任务的方法,但每个方法都处于同步/同步上下文中?

为什么在集内和集外会产生不同的promise 状态(使用Promise.race)?

如何保持子画布元素的1:1宽高比?

如何在不分配整个数组的情况下修改包含数组的行为主体?

Google图表时间轴—更改hAxis文本 colored颜色

拖放仅通过 Select 上传

在这种情况下,如何 for each 元素添加id?

Next.js(react)使用moment或不使用日期和时间格式

如何添加绘图条形图图例单击角形事件

如何在模块层面提供服务?

阿波罗返回的数据错误,但在网络判断器中是正确的

无法检测卡片重叠状态的问题

在HTML语言中调用外部JavaScript文件中的函数

如何在Angular拖放组件中同步数组?

从另一个数组中的对应行/键值对更新数组中的键值对对象

在不删除代码的情况下禁用Java弹出功能WordPress

匹配一个或多个可选重复的特定模式