题目描述
思路分析
二叉树
二叉树序列化和反序列化。选择适当的序列化方法即可。这里用前序遍历。
代码实现
class Solution {
public:
char* Serialize(TreeNode *root) {
if(!root) return "#";
string res=to_string(root->val);
res.push_back(',');
char* left = Serialize(root->left);
char* right = Serialize(root->right);
char* ans = new char[strlen(left)+strlen(right)+res.size()];
strcpy(ans, res.c_str());
strcat(ans, left);
strcat(ans, right);
return ans;
}
TreeNode* dfs_d(char *&str) {
if(*str == '#'){
str++;
return NULL;
}
int n=0;
while(*str!=','){
n = n*10 + (*str-'0');
str++;
}
str++;
TreeNode* root = new TreeNode(n);
root->left = dfs_d(str);
root->right = dfs_d(str);
return root;
}
TreeNode* Deserialize(char *str) {
return dfs_d(str);
}
};