二叉树的遍历

二叉树遍历

http://www.nowcoder.com/questionTerminal/4b91205483694f449f94c179883c1fef

思路

大家对于遍历二叉树应该很熟悉了,重点就是构建二叉树,构建二叉树和遍历二叉树是类似的,因为都是走的一个路径,所以我们就可以模拟先序遍历来进行构建。

#include<iostream>
#include<stack>

using namespace std;

class TreeNode{
public:
    char val;
    TreeNode* left;
    TreeNode* right;
public:
    TreeNode(char val) : val(val), left(NULL), right(NULL) {}
};
// 递归构建二叉树
int pos = 0;
TreeNode* createTree(string s){
    char c = s[pos ++];
    if(c =='#')//若是‘#’,说明该节点为空返回上一级节点
        return NULL;
    TreeNode* root = new TreeNode(c);//若不为‘#’,则创建该节点,并为本节点赋值
    root->left = createTree(s);//创建左子树
    root->right = createTree(s);//创建右子树
    return root;
}

void inOrder(TreeNode* root){
    if(root == NULL) return;
    inOrder(root->left);
    cout << root->val << " ";
    inOrder(root->right);
}

int main(){
    string s;
    while(cin >> s){
        inOrder(createTree(s));
    }
    return 0;
}
算法题解 文章被收录于专栏

不定期更新一些算法题解,有什么问题可以随时留言~

全部评论

相关推荐

不愿透露姓名的神秘牛友
昨天 11:21
被夸真的超级开心,好可爱的姐姐
码农索隆:老色批们不用脑补了,我把金智妮的图找来了查看图片
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
07-09 13:05
TMD找工作本来就烦,这东西什么素质啊😡
Beeee0927:hr是超雄了,不过也是有道理的
点赞 评论 收藏
分享
头顶尖尖的程序员:我也是面了三四次才放平心态的。准备好自我介绍,不一定要背熟,可以记事本写下来读。全程控制语速,所有问题都先思考几秒,不要急着答,不要打断面试官说话。
点赞 评论 收藏
分享
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
07-09 12:05
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务