Leetcode192: Serialize and Deserialize Binary Tree
来源:互联网 发布:网络人 编辑:程序博客网 时间:2024/05/17 20:29
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.
/** * 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 result; traverse(root, result); return result; } // Decodes your encoded data to tree. TreeNode* deserialize(string data) { int start = 0; return helper(data, start); } private: void traverse(TreeNode* root, string& result) { if(result.size() != 0) { result.push_back(','); } if(root == NULL) { result += "NULL"; return; } result += to_string(root -> val); traverse(root -> left, result); traverse(root -> right, result); } TreeNode* helper(string data, int& start) { if(start >= data.size()) { return NULL; } int index = data.find_first_of(',', start); if(index == string::npos) { index = data.size(); } string tmp = data.substr(start, index - start); start = index + 1; if(tmp == "NULL") { return NULL; } TreeNode* root = new TreeNode(stoi(tmp)); root -> left = helper(data, start); root -> right = helper(data, start); return root; }};// Your Codec object will be instantiated and called as such:// Codec codec;// codec.deserialize(codec.serialize(root));
- Leetcode192: Serialize and Deserialize Binary Tree
- Serialize and Deserialize Binary Tree
- Serialize and Deserialize Binary Tree
- Serialize and Deserialize Binary Tree
- Serialize and Deserialize Binary Tree
- Serialize and Deserialize Binary Tree
- Serialize and Deserialize Binary Tree
- Serialize and Deserialize Binary Tree
- Serialize and Deserialize Binary Tree
- Serialize and Deserialize Binary Tree
- Serialize and Deserialize Binary Tree
- Serialize and Deserialize Binary Tree
- Serialize and Deserialize Binary Tree
- Serialize and Deserialize Binary Tree
- Serialize and Deserialize Binary Tree & Serialize and Deserialize BST
- Serialize and deserialize a binary tree
- Serialize and Deserialize a binary tree
- leetcode 297 : Serialize and Deserialize Binary Tree
- 发布网站中的那些事儿
- Java排序之排序大综合
- VS2013下配置OpenCV2.4.11
- The first English passage
- 工作学习报告--java基础(1)
- Leetcode192: Serialize and Deserialize Binary Tree
- Hibernate操作数据库的方式总结
- Android:仿微信开场切换界面
- ios开发——NSdata 与 NSString,Byte数组,UIImage 的相互转换
- 简单了解STL
- Android实际开发问题01------从图库读取图片
- 旧版IE,IE 11以下版本即将停止技术支持
- 采购单审核
- MongoDB 基本命令