二叉树的序列化与反序列化 发表于 2022-05-19 | 分类于 数据结构 , 二叉树 , 二叉树的序列化与反序列化 | 二叉树的序列化与反序列化 297.二叉树的序列化与反序列化123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354//先序遍历求解class Codec {public: //将二叉树序列化为字符串 string serialize(TreeNode* root) { string res; helper(root, res); return res; } //辅助函数,将二叉树存入string中 void helper(TreeNode* root, string& s){ if(root==NULL){ s += "#,"; }else{ s += to_string(root->val) + ","; helper(root->left, s); helper(root->right, s); } } //将字符串反序列化为二叉树 TreeNode* deserialize(string data) { //将字符串转化成链表 list<string> lst; //借助一个字符串来控制"," string str; for(auto& ch : data){ if(ch==','){ lst.push_back(str); str.clear(); }else{ str.push_back(ch); } } if(!str.empty()){ lst.push_back(str); str.clear(); } return build(lst); } //辅助函数,通过链表构造二叉树 TreeNode* build(list<string>& data){ if(data.front()=="#"){ data.erase(data.begin()); return NULL; } TreeNode* root = new TreeNode(stoi(data.front())); data.erase(data.begin()); root->left=build(data); root->right=build(data); return root; }}; -------------本文结束 感谢阅读------------- 本文作者: HReina 本文链接: http://hreina.com/2022/05/19/%E4%BA%8C%E5%8F%89%E6%A0%91%E7%9A%84%E5%BA%8F%E5%88%97%E5%8C%96%E4%B8%8E%E5%8F%8D%E5%BA%8F%E5%88%97%E5%8C%96/ 版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 3.0 许可协议。转载请注明出处!