递归版:
void dfs(vector<int> &res, TreeNode* root){
if(root==NULL)
return;
dfs(res,root->left);
res.push_back(root->val);
dfs(res,root->right);
}
vector<int> inorderTraversal(TreeNode* root) {
vector<int> res;
if(root == NULL)
return vector<int>();
dfs(res,root);
return res;
}
迭代版:
vector<int> inorderTraversal(TreeNode* root) {
vector<int> res;
stack<TreeNode*> sta;
while(root!=NULL || !sta.empty()){
while(root!=NULL){
sta.push(root);
root = root->left;
}
root = sta.top();
sta.pop();
res.push_back(root->val);
root = root->right;
}
return res;
}