文章作者:Tyan
博客:noahsnail.com | CSDN | 简书
1. Description
2. Solution
/*** 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) {ostringstream out;serialize(root, out);return out.str();}// Decodes your encoded data to tree.TreeNode* deserialize(string data) {istringstream in(data);return deserialize(in);}private:void serialize(TreeNode* root, ostringstream& out) {if(!root) {out << "# ";return;}out << root->val << " ";serialize(root->left, out);serialize(root->right, out); }TreeNode* deserialize(istringstream& in) {string val;in >> val;if(val == "#") {return NULL;}TreeNode* root = new TreeNode(stoi(val));root->left = deserialize(in);root->right = deserialize(in);return root;}
};// Your Codec object will be instantiated and called as such:
// Codec codec;
// codec.deserialize(codec.serialize(root));
Reference
- https://leetcode.com/problems/serialize-and-deserialize-binary-tree/description/