题解 | #二叉树遍历#

二叉树遍历

https://www.nowcoder.com/practice/6e732a9632bc4d12b442469aed7fe9ce

#include <iostream>
#include <string>
using namespace std;

struct TreeNode{
    char data;
    TreeNode * left;
    TreeNode * right;
};

TreeNode * rebuild(string pre, string med){
    if(pre.size()==0)
    {return NULL;}
    else{
        char root = pre[0];
        TreeNode *pNewNode = new TreeNode;
        pNewNode->data = root;
        int position = med.find(root);
        pNewNode->left = rebuild(pre.substr(1,position),med.substr(0,position));
        pNewNode->right = rebuild(pre.substr(position+1),med.substr(position+1));
        return pNewNode;
    }
}
void postOrder(TreeNode * a){
    if(a == NULL) return;
    postOrder(a->left);
    postOrder(a->right);
    printf("%c",a->data);
}

char Pre[30];
char Med[30];
int main() {
    while(scanf("%s%s",Pre,Med)!=EOF){
        TreeNode * root = rebuild(Pre,Med);
        postOrder(root);
        printf("\n");

    }}
// 64 位输出请用 printf("%lld")

全部评论

相关推荐

流浪的神仙:无恶意,算法一般好像都得9硕才能干算法太卷啦
点赞 评论 收藏
分享
白火同学:大二有这水平很牛了,可以适当对关键信息加粗一点,比如关键技术、性能指标之类的。
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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