题解 | #序列化二叉树#
序列化二叉树
https://www.nowcoder.com/practice/cf7e25aa97c04cc1a68c8f040e71fb84
/*
struct TreeNode {
int val;
struct TreeNode *left;
struct TreeNode *right;
TreeNode(int x) :
val(x), left(NULL), right(NULL) {
}
};
*/
class Solution {
public:
void SerializeFun(TreeNode* root, string& str) {
if (root == nullptr) {
str += '#';
return;
}
string temp = to_string(root->val);
str += temp + ',';
SerializeFun(root->left, str);
SerializeFun(root->right, str);
}
char* Serialize(TreeNode* root) {
if (root == nullptr)
return "#";
string res;
SerializeFun(root, res);
char* charRes = new char[res.length() + 1];
strcpy(charRes, res.c_str());
charRes[res.length()] = '\0';
return charRes;
}
TreeNode* DeserializeFun(char** str) {
if (**str == '#') {
(*str)++;
return nullptr;
}
int val = 0;
while (**str != ',' &&** str != '\0') {
val = val * 10 + ((**str) - '0');
(*str)++;
}
TreeNode* root = new TreeNode(val);
if (**str == '\0')
return root;
else
(*str)++;
root->left = DeserializeFun(str);
root->right = DeserializeFun(str);
return root;
}
TreeNode* Deserialize(char* str) {
if(str == "#")
return nullptr;
return DeserializeFun(&str);
}
};
