题解 | #二叉树遍历#

二叉树遍历

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

#include <iostream>
#include <cstdio>
#include <string>

using namespace std;

struct TreeNode{
    char data;
    TreeNode * leftchild;
    TreeNode * rightchild;
    TreeNode(char c) : data(c), leftchild(NULL), rightchild(NULL){}
};

TreeNode* Build(int& position, string str){   //建立树
    char c = str[position++]; //当前字符
    if(c == '#') return NULL; //返回空树
    TreeNode* root = new TreeNode(c);  //创建新结点
    root -> leftchild = Build(position, str);  //创建左子树
    root -> rightchild = Build(position, str);  //创建右子树
    return root;
}

void InOrder(TreeNode* root){  //中序遍历
    if(root != NULL){
        InOrder(root->leftchild);
        printf("%c ", root->data);
        InOrder(root->rightchild);
    }
}

int main(){
    string str;
    while(cin >> str){
        int position = 0;  //标记字符串处理位置
        TreeNode* root = Build(position, str);
        InOrder(root);
        printf("\n");
    }
    return 0;
}
全部评论

相关推荐

11-01 08:48
门头沟学院 C++
伤心的候选人在吵架:佬你不要的,能不能拿户口本证明过户给我。。球球了
点赞 评论 收藏
分享
一名愚蠢的人类:多少games小鬼留下了羡慕的泪水
投递荣耀等公司10个岗位
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务