//morris
vector<int> inorderTraversal(TreeNode* root) {
TreeNode p=root, temp;
vector<int> ret;
while(p){
temp=p->left;
if(!temp){
ret.push_back(p->val);
p=p->right;
}
else{
while(temp->right!=nullptr && temp->right!=p)
temp=temp->right;
if(!temp->right){
temp->right=p;
p=p->left;
}else{
temp->right=nullptr;
ret.push_back(p->val);
p=p->right;
}
}
}
return ret;
}
Last updated
Was this helpful?