[leetcode]297. Serialize and Deserialize Binary Tree
来源:互联网 发布:淘宝联盟pid怎么设置 编辑:程序博客网 时间:2024/05/22 05:17
题目链接:https://leetcode.com/problems/serialize-and-deserialize-binary-tree/description/
Serialization is the process of converting a data structure or object into a sequence of bits so that it can be stored in a file or memory buffer, or transmitted across a network connection link to be reconstructed later in the same or another computer environment.
Design an algorithm to serialize and deserialize a binary tree. There is no restriction on how your serialization/deserialization algorithm should work. You just need to ensure that a binary tree can be serialized to a string and this string can be deserialized to the original tree structure.
For example, you may serialize the following tree
1 / \ 2 3 / \ 4 5as
"[1,2,3,null,null,4,5]"
, just the same as how LeetCode OJ serializes a binary tree. You do not necessarily need to follow this format, so please be creative and come up with different approaches yourself.Note: Do not use class member/global/static variables to store states. Your serialize and deserialize algorithms should be stateless.
Credits:
Special thanks to @Louis1992 for adding this problem and creating all test cases.
class Codec{public: string serialize(TreeNode* root) { if (!root) return " #"; string res=" "+to_string(root->val); return res+serialize(root->left)+serialize(root->right); } TreeNode* dfs(istringstream &is) { string str; is>>str; if(str=="#") return NULL; TreeNode* root=new TreeNode(stoi(str)); root->left=dfs(is); root->right=dfs(is); return root; } TreeNode* deserialize(string data) { istringstream is(data); return dfs(is); }};
class Codec {public: // Encodes a tree to a single string. string serialize(TreeNode* root) { if (root == nullptr) return "#"; return to_string(root->val)+","+serialize(root->left)+","+serialize(root->right); } // Decodes your encoded data to tree. TreeNode* deserialize(string data) { return mydeserialize(data); } TreeNode* mydeserialize(string& data) { if (data[0]=='#') { if(data.size() > 1) data = data.substr(2); return nullptr; } else { TreeNode* node = new TreeNode(helper(data)); node->left = mydeserialize(data); node->right = mydeserialize(data); return node; } }private: int helper(string& data) { int pos = data.find(','); int val = stoi(data.substr(0,pos)); data = data.substr(pos+1); return val; }};
- [LeetCode]297. Serialize and Deserialize Binary Tree
- LeetCode 297. Serialize and Deserialize Binary Tree
- leetcode 297. Serialize and Deserialize Binary Tree
- LeetCode 297. Serialize and Deserialize Binary Tree
- Leetcode 297. Serialize and Deserialize Binary Tree
- LeetCode 297. Serialize and Deserialize Binary Tree
- [LeetCode]297. Serialize and Deserialize Binary Tree
- Leetcode 297. Serialize and Deserialize Binary Tree
- [leetcode]297. Serialize and Deserialize Binary Tree
- leetcode 297 : Serialize and Deserialize Binary Tree
- LeetCode Serialize and Deserialize Binary Tree
- [LeetCode] Serialize and Deserialize Binary Tree
- [LeetCode]Serialize and Deserialize Binary Tree
- LeetCode -- Serialize and Deserialize Binary Tree
- LeetCode Serialize and Deserialize Binary Tree 树
- [LeetCode 297] Serialize and Deserialize Binary Tree
- LeetCode Serialize and Deserialize Binary Tree
- LeetCode 297 Serialize and Deserialize Binary Tree
- 银行综合业务储蓄平台管理系统
- JAVA 基础加强
- 杭电1233畅通工程
- 重入锁概念
- bouncycastle
- [leetcode]297. Serialize and Deserialize Binary Tree
- 金蝶 dll vbr ocx exe文件注册方法(转)
- 记录两种控制台报错信息
- java servlet
- 从模块化到组件化再到插件化
- CodeForces 839D Winter is here(数学 容斥)
- 我的第一篇博文!
- 链接远程数据库的权限问题
- 校园招聘-2017网易互联网研发内推笔试编程题1