《剑指offer》刷题笔记(树):序列化二叉树

来源:互联网 发布:linux安转vnc 编辑:程序博客网 时间:2024/05/16 05:09

《剑指offer》刷题笔记(树):序列化二叉树


  • 转载请注明作者和出处:http://blog.csdn.net/u011475210
  • 代码地址:https://github.com/WordZzzz/Note/tree/master/AtOffer
  • 刷题平台:https://www.nowcoder.com/
  • 题  库:剑指offer
  • 编  者:WordZzzz

  • 剑指offer刷题笔记树序列化二叉树
    • 题目描述
    • 解题思路
    • C版代码实现

题目描述

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

解题思路

这道题其实没什么好说的,在牛客网上,即使你在反序列化的时候直接输出root也能通过测试。

书上倒是写的听清楚。用到了dfs的思想,通过前序遍历来序列化或者反序列化。这块你只要自己写的格式能对应上,都是可以的。比如可以按照书中那样用$表示null并且用逗号分隔每个节点,也可以直接用下面代码所示的0xFFFFFFFF标识null。

C++版代码实现

/*struct TreeNode {    int val;    struct TreeNode *left;    struct TreeNode *right;    TreeNode(int x) :            val(x), left(NULL), right(NULL) {    }};*/class Solution {public:    vector<int> buf;    void dfs1(TreeNode *root){        if(!root)            buf.push_back(0xFFFFFFFF);        else{            buf.push_back(root->val);            dfs1(root->left);            dfs1(root->right);        }    }    TreeNode* dfs2(int* &str){        if(*str == 0xFFFFFFFF){            ++str;            return NULL;        }        TreeNode* res = new TreeNode(*str);        str++;        res->left = dfs2(str);        res->right = dfs2(str);        return res;    }    char* Serialize(TreeNode *root) {            buf.clear();        dfs1(root);        int bufSize = buf.size();        int *res = new int[bufSize];        for(int i = 0;i < bufSize; i++) res[i] = buf[i];        return (char*)res;    }    TreeNode* Deserialize(char *str) {        int *p = (int*)str;        return dfs2(p);    }};

系列教程持续发布中,欢迎订阅、关注、收藏、评论、点赞哦~~( ̄▽ ̄~)~

完的汪(∪。∪)。。。zzz

阅读全文
'); })();
1 0
原创粉丝点击
热门IT博客
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 6s玫瑰金 iphone5多少钱 iphoe6s iphine6s iphone6s实体店价格 6s参数详细参数 iphone6s尺寸参数 iphone6s屏幕 iphone6s plus报价 6s二手 iphone报价 6s配置 今年新款手机 iphone6s价格 iohone iphon 6s什么时候上市 iphone发布会 红米6s手机价格 名牌手机 iphome iphone6s手机 手机品牌排行 6s和6p iphone6s吧 平果6s手机多少钱 6s的含义 iphone6s 价格 爱疯6s 6s p iphone6s plus多少钱 iphone 6s plus ihpone 6s外壳多少钱 iphnoe 6s是什么时候上市的 6p和6s 6s屏幕多少钱 iphone6s中关村 现在iphone6s多少钱 6s银色