给定一个二叉树的根节点 root
,返回 它的 中序 遍历 。
思路:
中序遍历:左子树 根 右子树,对于每个节点也是这个方法。
定义inorder(root)表示当前遍历到root节点的答案,按着定义,只要递归调用inorder(root.left)来遍历root节点的左子树,然后将root节点的值加入答案,再递归调用inorder(root.right)来遍历root节点的右子树。
利用递归的思想,迭代的方法还不太会
结束的条件是空节点。
代码:
class Solution {
public:
void inorder(TreeNode* root,vector<int>& res){
if(!root){
return;
}
inorder(root->left,res);
res.push_back(root->val);
inorder(root->right,res);
}
vector<int> inorderTraversal(TreeNode* root){
vector<int> res;
inorder(root,res);
return res;
}
};