vector<int> buf;
//递归的前序遍历
void dfs1(TreeNode* root)
{
if (!root)
{
//root == NULL 递归的结束条件
buf.push_back(oxFFFFFFFF);
}
else
{
//访问根节点
buf.push_back(root->val);
//访问左子树
dfs1(root->left);
//访问右子树
dfs1(root->right);
}
}
TreeNode* dfs2(int* &p)
{
if (*p == oxFFFFFFFF)
{
p++;
return NULL;
}
TreeNode* res = new TreeNode(*p);
p++;
res->left = dfs2(p);
res->right = dfs2(p);
return res;
}
char* Serialize(TreeNode* root)
{
buf.clear();
dfs1(root);
int bufSize = buf.size();
int* res = new int[bufSize];
for (int i = 0; i < bufSize; i++)
{
res[i] = buf[i];
}
return (char*)res;
}
TreeNode* Deserialize()
{
int* p = (int*)str;
return dfs2(p);
}