//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?