<剑指Offer>面试题37: 序列化二叉树

题目描述

  • 请实现两个函数,分别用来序列化和反序列化二叉树

题目解读

  • 剑指Offer 194
  • 参考书上写的,递归思想写的,在牛客网上不知为啥没跑通,但在本地跑通了,很好,时间原因不在牛客网调试了

代码

#include<iostream>
using namespace std;

typedef struct node{
    char val;            //节点信息
    struct node *left;   //左孩子
    struct node *right;  //右孩子
}TreeNode;

// 反序列化二叉树
TreeNode* DeserializeCore(char str[], int *length){
    if(str[(*length)] == '$'){
        (*length)++;
        return NULL;
    }
    else{
        TreeNode* temp = new TreeNode();
        temp->val = str[(*length)];
        temp->left = temp->right = NULL;
        (*length)++;
        temp->left  = DeserializeCore(str, length);
        temp->right = DeserializeCore(str, length); 
        return temp;
    }
}

//创建一颗二叉树
TreeNode* create(){
    char tt[20] = {'1', '2', '4', '$', '$', '$', '3', '5', '$', '$', '6', '$', '$'};
    int length = 0;
    TreeNode* root;

    root = DeserializeCore(tt, &length);
    return root;
}

void SerializeCore(TreeNode *root, char result[], int *length){
    if(root == NULL){
        result[(*length)] = '$';
        (*length)++;
    }
    else{
        result[(*length)] = root->val;;
        (*length)++;
        SerializeCore(root->left, result, length);
        SerializeCore(root->right, result, length);
    }
}

// 序列化二叉树
char* Serialize(TreeNode *root) {    
        int length = 0;
        static char result[100];
       
        SerializeCore(root, result, &length);
        result[length] = '\0';
        return result;
}

// 前序遍历
void qianxu(TreeNode* root){
    if(root){
        cout<<root->val<<" ";
        qianxu(root->left);
        qianxu(root->right);
    }
}

int main(){
    TreeNode* root;
    root = create();
    qianxu(root);
    cout<<endl;
    
    char* ss = Serialize(root);
    cout<<ss;
    return 0;
}

总结展望

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • “我非他不嫁。” “我非她不娶。” 这两句话以前看起来是信誓旦旦的承诺,现在被我听到就觉得孩子气太多。 像我这么没...
    _锁阅读 638评论 0 1
  • 第五章 化身 “你你你你。。。二十年,你不是死了吗?”原谅我真的想不起来他的名字了。 “主人,您还是一如既往的怂啊...
    图七上层阅读 422评论 2 3
  • 除夕当天,我们策划一个网络直播活动,邀请几位外国留学生到市民家庭过年吃团圆饭,初衷是让外国人了解中国的年俗。 开始...
    人间四月天天阅读 533评论 0 7

友情链接更多精彩内容