javascript - BinTree 类型脚本上的 Inorder

标签 javascript typescript

我的任务是实现一个函数,该函数迭代 bin 树并按顺序返回其所有值的数组。代码如下:

interface BinTree {
root: number;
left?: BinTree;
right?: BinTree;
 };
 const TreeInArray =(t:BinTree):number[] =>{
       let list = new Array<number>(); 
        if (t.left!=undefined) { 
            list = list.concat(TreePreArray(t.left))  
        }
       list.push(t.root)
       if (t.right!=undefined) { 
          list = list.concat(TreePreArray(t.right))
        }
    return list
 }
 let bn1 : BinTree = { // DOES NOT PASS TYPE CHECKING
 root: 1,
 left: { root: 2 ,
    left:{root:4 },right:{root:5 } },
 right: { root: 3}
 }
 console.log((TreeInArray(bn1)));

输出为

[ 2, 4, 5, 1, 3 ]

我期望输出与此类似

[4, 2, 5, 1, 3]

这是什么原因?

最佳答案

您正在递归调用预购版本而不是有序版本:

const TreeInArray = (t: BinTree): number[] => {
    let list = new Array<number>();
    if (t.left != undefined) {
        list = list.concat(TreeInArray(t.left))
    }
    list.push(t.root)
    if (t.right != undefined) {
        list = list.concat(TreeInArray(t.right))
    }
    return list
}

关于javascript - BinTree 类型脚本上的 Inorder,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49610436/

相关文章:

javascript - 如何在 Firefox 和 Chrome 中阻止指定脚本

javascript - 在 CSS 中调用 JavaScript 函数

javascript - 事件存储未知错误 : Could not recognize BadRequest

typescript - 有没有办法在 TypeScript 中递归解包函数类型?

javascript - 更新数组中的多个对象

javascript - js中如何插入换行符?

javascript - JavaScript 事件循环是否在映射迭代之间产生控制?

javascript - 这个 Javascript 如何向右填充?

angular - 如何从父组件调用路由器导出子组件方法

javascript - 模块构建失败(来自./node_modules/postcss-loader/src/index.js): SyntaxError (2:14) Unknown word