You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

请求排查二叉树中序遍历TypeScript实现代码的问题

修复二叉树中序遍历的TypeScript代码问题

我帮你排查出了代码里的几个关键问题,现在来逐个解决:

核心问题:递归调用函数名错误

你的函数名为TreeInArray,但递归遍历左右子树时却调用了不存在的TreePreArray——这明显是笔误,把中序(In)写成了前序(Pre),这会直接导致运行时报错。

次要问题:未完成的二叉树示例定义

你声明了bn1但没完成定义,我会补一个完整的示例二叉树,方便你测试代码。

优化建议(可选)

可以用TypeScript的可选链操作符(?.)简化存在性判断,让代码更简洁;另外数组初始化可以直接用[]替代new Array<number>(),可读性更好。


修正后的完整代码

interface BinTree { 
  root: number; 
  left?: BinTree; 
  right?: BinTree; 
};

const TreeInArray = (t: BinTree): number[] => {
  let list: number[] = [];
  // 递归遍历左子树(中序:左->根->右)
  if (t.left) {
    list = list.concat(TreeInArray(t.left));
  }
  // 访问根节点
  list.push(t.root);
  // 递归遍历右子树
  if (t.right) {
    list = list.concat(TreeInArray(t.right));
  }
  return list;
};

// 完整的示例二叉树:
//      1
//       \
//        2
//       /
//      3
let bn1: BinTree = {
  root: 1,
  right: {
    root: 2,
    left: { root: 3 }
  }
};

// 测试调用:中序遍历结果应该是 [1, 3, 2]
console.log(TreeInArray(bn1)); // 输出 [1, 3, 2]

补充说明

中序遍历的顺序是左子树 → 根节点 → 右子树,修正后的代码严格遵循了这个顺序。如果需要迭代实现(避免递归栈溢出问题),也可以告诉我,我再补充迭代版本的代码~

内容的提问来源于stack exchange,提问作者Shmuel Niraev

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 08:31:21