代码如下:
vector<int> Serialize(TreeNode *root)
{
vector<int> vec;
int i = 0;
stack<TreeNode *>s;
TreeNode *r = root;
while (!s.empty() || r)
{
while (r)
{
s.push(r);
vec.push_back(r->val);
r = r->left;
}
vec.push_back(INT_MIN);
if (!s.empty())
{
r = s.top();
s.pop();
r = r->right;
}
}
return vec;
}
TreeNode* Deserialize(vector<int> &vec,int *pos)
{
if ((*pos) < vec.size())
{
if (vec[(*pos)] == INT_MIN)
{
(*pos)++;
return nullptr;
}
TreeNode *root = new TreeNode(vec[(*pos)]);
(*pos)++;
root->left = Deserialize(vec, pos);
root->right = Deserialize(vec, pos);
return root;
}
return nullptr;
}