449. Serialize and Deserialize BST

来源:互联网 发布:path软件太好了 编辑:程序博客网 时间:2024/06/05 11:24

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 search tree.
There is no restriction on how your serialization/deserialization
algorithm should work. You just need to ensure that a binary search
tree can be serialized to a string and this string can be deserialized
to the original tree structure.

The encoded string should be as compact as possible.

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) {        if(!root) return " #";          string ans = " "+to_string(root->val);          return ans + serialize(root->left) + serialize(root->right);       }    TreeNode* DFS(istringstream &is)      {          string str;          is >> str;          if(str == "#") return NULL;          TreeNode* root = new TreeNode(stoi(str));          root->left = DFS(is), root->right = DFS(is);          return root;      }      // Decodes your encoded data to tree.    TreeNode* deserialize(string data) {        istringstream is(data);          return DFS(is);      }};// Your Codec object will be instantiated and called as such:// Codec codec;// codec.deserialize(codec.serialize(root));
原创粉丝点击