递归:
void process(TreeNode *root,vector<int> &v){
if(root == NULL)return;
v.push_back(root->val);
process(root->left,v);
process(root->right,v);
}
vector<int> preorderTraversal1(TreeNode *root) {
vector<int> v;
process(root,v);
return v;
}
非递归
//非递归
vector<int> preorderTraversal(TreeNode *root) {
vector<int> v;
stack<TreeNode*> s;
if(root == NULL)return v;
s.push(root);
while(!s.empty()){
TreeNode *t = s.top();
v.push_back(t->val);
s.pop();
if(t->right)s.push(t->right);
if(t->left)s.push(t->left);
}
return v;
}