lintcode binary-tree-serialization 二叉树的序列化与反序列化
来源:互联网 发布:sql server在哪下载 编辑:程序博客网 时间:2024/05/01 07:09
问题描述
lintcode
参考
Serialization/Deserialization of a Binary Tree
LintCode Binary Tree Serialization
笔记
可以用先序遍历
和 使用"#"来表示NULL
的方法来序列化,最后也用先序遍历来反序列化。
代码
/** * Definition of TreeNode: * class TreeNode { * public: * int val; * TreeNode *left, *right; * TreeNode(int val) { * this->val = val; * this->left = this->right = NULL; * } * } */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) { // write your code here string s = ""; writeTree(s, root); return s; } void writeTree(string &s, TreeNode* root) { if (root == NULL) { s += "# "; return; } s += (to_string(root->val) + ' '); writeTree(s, root->left); writeTree(s, root->right); } /** * 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) { // write your code here int pos = 0; return readTree(data, pos); } TreeNode* readTree(string data, int& pos) { if (data[pos] == '#') { pos += 2; return NULL; } int nownum = 0; while (data[pos] != ' ') { nownum = nownum * 10 + (data[pos] - '0'); pos++; } pos++; TreeNode* nowNode = new TreeNode(nownum); nowNode->left = readTree(data, pos); nowNode->right = readTree(data, pos); return nowNode; }};
0 0
- lintcode binary-tree-serialization 二叉树的序列化与反序列化
- 7.Binary Tree Serialization-二叉树的序列化和反序列化(中等题)
- Tree-----297. Serialize and Deserialize Binary Tree(二叉树的序列化与反序列化)
- lintcode,二叉树的序列化和反序列化
- Leetcode 297 Serialize and Deserialize Binary Tree(序列化与反序列化二叉树)
- leetcode297:二叉树的序列化和反序列化(Serialize and Deserialize Binary Tree)
- leetcode 297. Serialize and Deserialize Binary Tree 二叉树的序列化和反序列化
- Serialize and Deserialize Binary Tree 序列化和反序列二叉树
- LeetCode 297. Serialize and Deserialize Binary Tree(二叉树的序列化和反序列化)
- 二叉树的序列化与反序列化
- 二叉树的序列化与反序列化
- 二叉树的序列化与反序列化
- 二叉树的序列化与反序列化
- 二叉树的序列化与反序列化
- 二叉树的序列化与反序列化
- LintCode 7-二叉树的序列化和反序列化
- LintCode 7 二叉树的序列化和反序列化
- LintCode-----7.二叉树的序列化和反序列化
- Android Lollipop
- linux daemon(2)
- Ubuntu14.04卸载内核
- Android 单位px、dp、sp转换工具类
- OC_数据库常见SQL语句
- lintcode binary-tree-serialization 二叉树的序列化与反序列化
- 环信使用思路逻辑
- 权限思路及代码实现
- 在Sublime Text3中实现jade语法高亮
- github上搜索优秀C代码的指令
- 在做性能测试之前需要知道什么
- shell 中#!/bin/sh 的意思
- 外部符号无法解析 [c/c++]
- Android 5.0 API