LintCode 7:Binary Tree Serialization
来源:互联网 发布:南京网络问政平台 编辑:程序博客网 时间:2024/05/18 07:43
Problem:Design an algorithm and write code to serialize and deserialize a binary tree. Writing the tree to a file is called 'serialization' and reading back from the file to reconstruct the exact same binary tree is 'deserialization'.
class Solution {public:/*** This method will be invoked first, you should design your own algorithm* to serialize a binary tree which denote by a root node to a string which* can be easily deserialized by your own "deserialize" method later.*/string serialize(TreeNode *root) {queue<TreeNode*> node;vector<string> result;TreeNode* tmp;node.push(root);while (!node.empty()) {tmp = node.front();node.pop();if (tmp)result.push_back(to_string(tmp->val));else {result.push_back("#");continue;}if (tmp->left)node.push(tmp->left);elsenode.push(nullptr);if (tmp->right)node.push(tmp->right);elsenode.push(nullptr);}string r;for (int i = 0;i<result.size();i++) {r += result[i] + " ";}return r;}/*** This method will be invoked second, the argument data is what exactly* you serialized at method "serialize", that means the data is not given by* system, it's given by your own serialize method. So the format of data is* designed by yourself, and deserialize it here as you serialize it in* "serialize" method.*/TreeNode *deserialize(string data) {istringstream iss(data);vector<TreeNode*> tree;TreeNode* tmp;string str;getline(iss, str, ' ');while (!str.empty()) {if (str != "#")tmp = new TreeNode(stoi(str));elsetmp = nullptr;tree.push_back(tmp);getline(iss, str, ' ');}TreeNode* head=tree[0];int parent = 0;int child = 1;while (child<tree.size()) {tmp = tree[parent];if (!tmp) {parent++;continue;}tmp->left = tree[child];tmp->right = tree[child+1];child += 2;parent++;}return head;}};
0 0
- LintCode 7:Binary Tree Serialization
- lintcode:Binary Tree Serialization
- [Lintcode]Binary Tree Serialization
- Lintcode - Serialization and Deserialization Of Binary Tree
- Lintcode_7 Binary Tree Serialization
- Binary Tree Serialization
- Binary Tree Serialization
- Binary Tree Serialization
- lintcode binary-tree-serialization 二叉树的序列化与反序列化
- [LintCode]Invert Binary Tree
- lintcode: Balanced Binary Tree
- lintcode:Identical Binary Tree
- Serialization/Deserialization of a Binary Tree
- [Random Coding] De/Serialization Binary Tree
- Verify Preorder Serialization of a Binary Tree
- Verify Preorder Serialization of a Binary Tree
- Verify Preorder Serialization of a Binary Tree
- Verify Preorder Serialization of a Binary Tree
- 军用软件国家标准
- A + B Problem
- Hopcroft-Karp算法模板(解决二分图最大匹配问题)
- 页面多个setInterval
- ngrok的使用
- LintCode 7:Binary Tree Serialization
- SpringMVC入门案例及请求流程图(关于处理器或视图解析器或处理器映射器等的初步配置)
- Android上常用的几种本地数据存储方式:2、文件存储数据
- mysql-connector-java 6.+ 使用
- [c++基础] 序
- JavaScript学习-DOM-Node类型
- 计算机图形学——资料
- javascript之必须要知道的概念
- 输入一个链表,从尾到头打印链表每个节点的值。