方法一:堆栈解决,不修改原节点
vector<int> inorderTraversal(TreeNode* root) {
//堆栈解法 时间O(n)
vector <int> res;
TreeNode *curroot=root;
stack<TreeNode *>s;
while(curroot||!s.empty()){
if(curroot){
s.push(curroot);
curroot=curroot->left;
}
else{
TreeNode *node=s.top();
s.pop();
res.push_back(node->val);
curroot=node->right;
}
}
return res;
}
方法二递归解决
vector<int> inorderTraversal(TreeNode* root) {
vector <int> res;
inorder(root,res);
return res;
}
private:
void inorder(TreeNode* root,vector<int>&res){
if(!root)return ;
inorder(root->left,res);
res.pus