描述:
给出一棵二叉树,返回其节点值的前序遍历。
样例:
给出一棵二叉树 {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;
}
本文介绍了一种实现二叉树前序遍历的方法,包括递归和非递归两种方式。递归方法直接利用函数自身进行节点的访问及子树的遍历;非递归方法使用栈来辅助完成遍历过程。
157

被折叠的 条评论
为什么被折叠?



