序列化二叉树
(能看懂这个题的都是大佬…我太菜了…)
/*
struct TreeNode {
int val;
struct TreeNode *left;
struct TreeNode *right;
TreeNode(int x) :
val(x), left(NULL), right(NULL) {
}
};
*/
class Solution
{
private:
string serialize(TreeNode *root)
{
if(root==nullptr)
{
return "#!";
}
string str;
str=to_string(root->val)+'!';
str+=serialize(root->left);
str+=serialize(root->right);
return str;
}
TreeNode* deserialize(char *&str)
{
if(*str=='#')
{
str++;
return nullptr;
}
int num=0;
while(*str!='!')
{
num=num*10+*str-'0';
str++;
}
TreeNode* node=new TreeNode(num);
node->left=deserialize(++str);
node->right=deserialize(++str);
return node;
}
public:
char* Serialize(TreeNode *root)
{
string s=serialize(root);
char* res=new char[s.size()];
for(int i=0;i<s.size();i++)
{
res[i]=s[i];
}
return res;
}
TreeNode* Deserialize(char *str)
{
return deserialize(str);
}
};