3.21 94.二叉树的中序遍历
给定一个二叉树的根节点 root
,返回 它的 *中序 遍历*
示例 1:
输入:root = [1,null,2,3]
输出:[1,3,2]
示例 2:
输入:root = []
输出:[]
示例 3:
输入:root = [1]
输出:[1]
提示:
- 树中节点数目在范围
[0, 100]
内 -100 <= Node.val <= 100
我的思路:
中序排序
左根->根->右根
我的代码:
function inorderTraversal(root: TreeNode | null): number[] {
const arr = []
if(root === null){
return arr;
}
inorderTraversal(root.left);
arr.push(root.val);
inorderTraversal(root.right);
return arr;
};
答案错误,只有一个数字
递归调用 inorderTraversal(root.left); 和 inorderTraversal(root.right); 之后,您没有将它们的返回值合并到 arr 数组中
修改代码:
function inorderTraversal(root: TreeNode | null): number[] {
const arr = []
if(root === null){
return arr;
}
arr.push(...inorderTraversal(root.left));
arr.push(root.val);
arr.push(...inorderTraversal(root.right));
// reserve(root);
return arr;
};
方案2:
我们在函数当中再新建一个递归函数,在递归函数中push,只有就可以解决答案只有一个数字的问题
function reserve(node : TreeNode | null){
if(node === null){
return;
}
// 先遍历左根
reserve(node.left);
// 遍历根
arr.push(node.val);
// 最后遍历右根
reserve(node.right);
}