题解 | #序列化二叉树#
序列化二叉树
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); } };