您的位置:首页 > 其它

66. 二叉树的前序遍历

2018-03-06 22:37 288 查看

66. 二叉树的前序遍历 

 描述

给出一棵二叉树,返回其节点值的前序遍历样例给出一棵二叉树 
{1,#,2,3}
, 1
\
2
/
3
 返回 
[1,2,3]
.挑战 你能使用非递归实现么? vector<int> a;
vector<int> preorderTraversal(TreeNode * root) {
// write your code here
if(root==NULL){return a;}
a.push_back(root->val);
if(root->left!=NULL){
preorderTraversal(root->left);
}

if(root->right!=NULL){
preorderTraversal(root->right);
}
return a;
}
改进后
vector<int> a;
vector<int> preorderTraversal(TreeNode * root) {
// write your code here
if(root==NULL){return a;}
else{
a.push_back(root->val);
preorderTraversal(root->left);
preorderTraversal(root->right);
}
return a;
}
非递归方法
vector<int> preorderTraversal(TreeNode * root) {
// write your code here
int top=-1;
vector<int> a;
TreeNode * s[1000];
while(root!=NULL || top!=-1){
while(root!=NULL){
a.push_back(root->val);
s[++top]=root;
root=root->left;
}
if(top!=-1){
root = s[top--];
root=root->right;
}
}
return a;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息