描述:
给出一棵二叉树,返回其节点值的前序遍历。
样例:
给出一棵二叉树 {1,#,2,3},
1
\
2
/
3
返回 [1,2,3]
递归法:
class Solution {
public:
/*
* @param root: A Tree
* @return: Preorder in ArrayList which contains node values.
*/
vector<int> min;
vector<int> preorderTraversal(TreeNode * root) {
// write your code here
if(root!=NULL){
min.push_back(root->val);
if((root->left)!=NULL) preorderTraversal(root->left);
if((root->right)!=NULL) preorderTraversal(root->right);
}
return min;
}
};
非递归法(用栈):
class Solution {
public:
/*
* @param root: A Tree
* @return: Preorder in ArrayList which contains node values.
*/
vector<int> preorderTraversal(TreeNode * root) {
// write your code here
TreeNode *temp[50],*p;
int top=-1;
vector<int> min;
if(root!=NULL){
temp[++top]=root;
while(top>-1){
p=temp[top--];
min.push_back(p->val);
if(p->right!=NULL) temp[++top]=p->right;
if(p->left!=NULL) temp[++top]=p->left;
}
}
return min;
}