二叉树的中序遍历
题目描述
- 题目地址:https://leetcode.cn/problems/binary-tree-inorder-traversal/
- 题目要求
给定一个二叉树的根节点root
,返回它的中序遍历 。 - 示例:
示例 1:
输入:root = [1,null,2,3]
输出:[1,3,2]
示例 2:
输入:root = []
输出:[]
解题思路
-
首先我们需要了解什么是二叉树的中序遍历
按照访问左子树——根节点——右子树的方式遍历这棵树,而在访问左子树或者右子树的时候我们按照同样的方式遍历,直到遍历完整棵树。因此整个遍历过程天然具有递归的性质,我们可以直接用递归函数来模拟这一过程。 -
定义
inorder(root)
表示当前遍历到root 节点的答案,那么按照定义,我们只要递归调用 inorder(root.left) 来遍历root 节点的左子树,然后将root 节点的值加入答案,再递归调用inorder(root.right) 来遍历root 节点的右子树即可,递归终止的条件为碰到空节点。
解题代码
var inorderTraversal = function(root) {
const res = [];// 储存处理结果
const inorder = (root) => {
if (!root) {
return;
}
// 遍历左子树
inorder(root.left);
// 记录值
res.push(root.val);
// 遍历右子树
inorder(root.right);
}
inorder(root);
return res;
};