描述
给定一个二叉树的根节点root,返回它的中序遍历结果。
数据范围:树上节点数满足 0 \le n \le 10000≤n≤1000,树上每个节点的值满足 -1000 \le val \le 1000−1000≤val≤1000
进阶:空间复杂度 O(n)O(n),时间复杂度 O(n)O(n)
示例1
输入:
{1,2,#,#,3}
返回值:
[2,3,1]
说明:
二叉树的中序遍历,简单来说就是“左根右”,展开来说就是对于一棵二叉树,我们优先访问它的左子树,等到左子树全部节点都访问完毕,再访问根节点,最后访问右子树。同时访问子树的时候,顺序也与访问整棵树相同。
class Solution {
public:
vector<int> inorderTraversal(TreeNode* root) {
// write code here
//先访问左边再访问中间再访问右边
vector<int> res;
recursion(root, res);
return res;
}
void recursion(TreeNode* root,vector<int> &res)
{
if (root==nullptr)return;
//递归左值
recursion(root->left,res);
//左值结束,插入它的中间
res.push_back(root->val);
//递归它的右值,右值也会左递归再中间再右值
recursion(root->right, res);
}
};
总结·:右节点也要经历左递归,递归这里好好注意。