vector<int> preorderTraversal(TreeNode *root) {
vector<TreeNode *> vec;
vector<int > vecResult;
TreeNode *pointer=root;
while(pointer||vec.empty()){
if(pointer){
vecResult.push_back(pointer->val);
vec.push_back(pointer);
pointer=pointer->left;
}
else{
pointer=vec.back();
vec.pop_back();
pointer=pointer->right;
}
}
return vecResult;
}