//morris

vector<int> preorderTraversal(TreeNode* root) {

vector<int> ret;

TreeNode temp, p=root;

while(p){

if(!p->left) {

ret.push_back(p->val);

p=p->right;

}else{

temp=p->left;

while(temp->right && temp->right!=p){

temp=temp->right;

}

if(!temp->right){

temp->right=p;

ret.push_back(p->val);

p=p->left;

}else{

temp->right=nullptr;

p=p->right;

}

}

}

return ret;

}

Last updated

Was this helpful?