题目
给定一个二叉树的根节点 root ,返回 它的 中序 遍历 。
示例 :
输入:root = [1,null,2,3]
输出:[1,3,2]
思路
中序遍历的顺序是左子树 -> 根节点 -> 右子树。因此,我们可以通过递归的方式遍历二叉树,并将节点值依次添加到一个向量中,最终返回这个向量即可。
具体的实现步骤如下:
- 定义一个辅助函数inorderTraversalHelper(TreeNode* root, vector& res),用于实现递归过程。该函数接收两个参数:当前节点root和存储结果的向量res。
- 在inorderTraversalHelper函数中,首先判断当前节点是否为空,如果为空则直接返回。
- 接着,递归地遍历当前节点的左子树,并将遍历结果添加到res中。
- 然后,将当前节点的值添加到res中。
- 最后,递归地遍历当前节点的右子树,并将遍历结果添加到res中。
- 在inorderTraversal函数中,创建一个空向量res,然后调用inorderTraversalHelper函数,最终返回res即可。
Code:
class Solution {
public:vector<int> inorderTraversal(TreeNode* root) {vector<int> res;inorderTraversalHelper(root, res);return res;}private:void inorderTraversalHelper(TreeNode* root, vector<int>& res) {if (!root) {return;}inorderTraversalHelper(root->left, res);res.push_back(root->val);inorderTraversalHelper(root->right, res);}
};