方法一:使用递归的方式 比较简单
std::vector<int>a;
std::vector<int> inorderTraversal(TreeNode* root) {
if(root){
inorderTraversal(root->left);
a.push_back(root->val);
inorderTraversal(root->right);
}
return a;
}
方法二:使用迭代的方式 即使用堆栈
std::vector<int> inorderTraversal(TreeNode* root) {
std::vector<int>a;
if(root==NULL)return a;
std::stack<TreeNode*>s;
while(!s.empty()||root!=NULL){
while(root!=NULL){
s.push(root);
root=root->left;
}
if(!s.empty()){
TreeNode*p=s.top();
s.pop();
a.push_back(p->val);
root=p->right;
}
}
return a;
}