【剑指offer】题61:二叉树序列化、反序列化
2017-09-03 10:32
423 查看
使用stringstream
http://blog.csdn.net/xw20084898/article/details/21939811
stringstream 是 C++ 提供的另一个字串型的串流(stream)物件,和之前学过的 iostream、fstream 有类似的操作方式。要使用 stringstream, 必須先加入這一行:
stringstream 主要是用在將一個字串分割,可以先用 clear( )以及 str( ) 將指定字串設定成一开始的內容,再用 >> 把个別的资料输出,例如:
http://blog.csdn.net/xw20084898/article/details/21939811
stringstream 是 C++ 提供的另一个字串型的串流(stream)物件,和之前学过的 iostream、fstream 有类似的操作方式。要使用 stringstream, 必須先加入這一行:
#include <sstream>
stringstream 主要是用在將一個字串分割,可以先用 clear( )以及 str( ) 將指定字串設定成一开始的內容,再用 >> 把个別的资料输出,例如:
string s; stringstream ss; int a; char b; string c; getline(cin, s); ss.clear(); ss.str(s); ss >> a >> b >> c;
#include <iostream> #include <string> #include <sstream> using namespace std; struct TreeNode { int val; struct TreeNode *left; struct TreeNode *right; TreeNode(int x) : val(x), left(NULL), right(NULL) {} }; string Serialize(TreeNode *root) { string str; if (root == NULL) { str = "$,"; return str; } stringstream stream; stream << root->val<<","; stream << Serialize(root->left); stream << Serialize(root->right); str = stream.str(); return str; } TreeNode* Deserialize(stringstream& stream) { TreeNode* pRoot(NULL); char c; stream >> c; if< 4000 /span> (c == '$') { stream >> c; return pRoot; } int num(0); while (c != ',') { num = num * 10 + c - '0'; stream >> c; } pRoot = new TreeNode(num); pRoot->left = Deserialize(stream); pRoot->right= Deserialize(stream); return pRoot; } TreeNode* Deserialize(string str) { TreeNode * pRoot(NULL); if (str.empty()) { return pRoot; } stringstream stream(str); return Deserialize(stream); } int main() { string str = "100,50,$,$,150,$,$"; TreeNode* root; root = Deserialize(str); auto tmp = Serialize(root); root = Deserialize(str); tmp = Serialize(root); return 0; }
相关文章推荐
- 剑指offer-二叉树的序列化和反序列化(困惑)-Java
- (C++)剑指offer-61:序列化二叉树(树)(再理解)
- 剑指offer:二叉树的序列化和反序列化
- 剑指offer——序列化,反序列化二叉树(好题)
- 剑指offer 面试题62 序列化和反序列化二叉树
- 剑指Offer_61_序列化二叉树
- 剑指offer56--二叉树的序列化和反序列化
- 剑指offer——面试题61:按之字形顺序打印二叉树
- 【剑指offer】第三十六题(二叉搜索树与双向链表) 和 第三十七题(序列化二叉树)
- 剑指offer--(19)序列化二叉树--Java描述
- 【剑指offer】题61:之字打印二叉树
- 剑指offer面试题61 按之字形顺序打印二叉树(java实现)
- 剑指offer-序列化二叉树
- 剑指Offer-37:序列化二叉树
- 剑指Offer——序列化二叉树
- 剑指offer 61 - 按之字形打印二叉树
- 剑指offer--序列化二叉树
- 剑指offer(五十)之序列化二叉树
- 剑指offer--序列化二叉树
- 剑指offer 面试题61 按之字形顺序打印二叉树