二叉树的中序遍历,比较简单的递归,思考分两步:(1)递归逻辑(2)终止条件
(1)递归逻辑:左根右的顺序遍历,因此,如果左子树不空,先遍历左子树;然后打印当前根;如果右子树不空,遍历右子树;
(2)终止条件:如果左右子树都为空,打印当前根。
class Solution {
public:
vector<int> inorderTraversal(TreeNode* root) {
vector<int> res;
if(root==NULL) return res;
inorderTraversal(root,res);
return res;
}
void inorderTraversal(TreeNode * root,vector<int> & res){
if(root->left==NULL && root->right==NULL) {
res.push_back(root->val);
return;
}
if(root->left) inorderTraversal(root->left,res);
res.push_back(root->val);
if(root->right) inorderTraversal(root->right,res);
}
};