博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
LeetCode 297. 二叉树的序列化与反序列化
阅读量:5463 次
发布时间:2019-06-15

本文共 1614 字,大约阅读时间需要 5 分钟。

序列化是将一个数据结构或者对象转换为连续的比特位的操作,进而可以将转换后的数据存储在一个文件或者内存中,同时也可以通过网络传输到另一个计算机环境,采取相反方式重构得到原数据。

请设计一个算法来实现二叉树的序列化与反序列化。这里不限定你的序列 / 反序列化算法执行逻辑,你只需要保证一个二叉树可以被序列化为一个字符串并且将这个字符串反序列化为原始的树结构。
示例:
你可以将以下二叉树:
    1
   / \
  2   3
      /  \
     4  5
序列化为 "[1,2,3,null,null,4,5]"
提示: 这与 LeetCode 目前使用的方式一致,详情请参阅 LeetCode 序列化二叉树的格式。你并非必须采取这种方式,你也可以采用其他的方法解决这个问题。
说明: 不要使用类的成员 / 全局 / 静态变量来存储状态,你的序列化和反序列化算法应该是无状态的。
算法:这题与449一样,不赘述。

/** * Definition for a binary tree node. * struct TreeNode { *     int val; *     TreeNode *left; *     TreeNode *right; *     TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */class Codec {public:    // Encodes a tree to a single string.    string serialize(TreeNode* root) {        string res;        dfs_s(root,res);        return res;    }    void dfs_s(TreeNode* root, string& res){        if(!root){            res+="null ";            return ;        }        res+=to_string(root->val)+' ';        dfs_s(root->left, res);        dfs_s(root->right, res);            }    // Decodes your encoded data to tree.    TreeNode* deserialize(string data) {        int u=0;        return dfs_t(data, u);    }    TreeNode* dfs_t(string data, int& u){        if(u==data.size())return NULL;        int k=u;        while(data[k]!=' ')k++;        if(data[u]=='n'){            u=k+1;            return NULL;        }        int m=1,val=0;        if(u
left=dfs_t(data,u); root->right=dfs_t(data,u); return root; }};// Your Codec object will be instantiated and called as such:// Codec codec;// codec.deserialize(codec.serialize(root));

 

转载于:https://www.cnblogs.com/programyang/p/11169745.html

你可能感兴趣的文章
在ubuntu12.04,64位中安装lnmp一键包mysql的问题
查看>>
一级关联数组转化成多层子级数组
查看>>
百度Ueditor编辑器的Html模式自动替换样式的解决方法
查看>>
八:Razor(MVC框架视图引擎)
查看>>
java代码编辑器 pdf文件预览 主流SSM 代码生成器 shrio redis websocket即时通讯
查看>>
final
查看>>
Win8下更改Chrome缓存目录
查看>>
django框架小技巧
查看>>
(八)8-3多线程共享变量
查看>>
Parameter配置文件获取
查看>>
[Operating System] {ud923} P3L1: Scheduling
查看>>
java后端发送http请求使用RestTemplate
查看>>
避免商品超卖的4种方案
查看>>
AtCoder - 1999 Candy Piles
查看>>
Checklist: 2019 05.01 ~ 06.30
查看>>
【最短路】Vijos P1022Victoria的舞会2
查看>>
(原创)大数据时代:基于微软案例数据库数据挖掘知识点总结(Microsoft 线性回归分析算法)...
查看>>
调整Tomcat的并发线程到5000+
查看>>
[Typescript 2] Nullable Types - Avoiding null and undefined Bugs
查看>>
[Javascirpt AST] Babel Plugin -- create new CallExpression
查看>>