我有一个包含二叉树序列化的字符串。序列化已使用预订完成。如何检查给定字符串是否为有效序列化?
例如:
A B * * *
有效的树
A
/ \
B NULL
/ \
NULL NULL
A * B * * *无效
A * * B * *无效
此代码是否足以验证
Node *MakeTree(char *s)
{
if(!s)
return NULL;
if(*s=='*')
return NULL;
Node *root = newNode(*s);
s++;
root->left = MakeTree(s);
root->right = MakeTree(s);
return root;
}
bool IsValid(char *s)
{
if(!MakeTree(s))
cout<<"Invalid";
else
cout<<"Valid";
}