你需要采用前序遍历的方式,将一个二叉树转换成一个由括号和整数组成的字符串。
空节点则用一对空括号 “()” 表示。而且你需要省略所有不影响字符串与原始二叉树之间的一对一映射关系的空括号对。
void _tree2str(struct TreeNode* t,char* ptr)
{
if(t == NULL)
return;
char buff[12] = {'\0'};
sprintf(buff,"%d",t->val);
strcat(ptr,buff);
if(t -> left == NULL)
{
if(t->right == NULL)
{
return;
}
else
{
strcat(ptr,"()");
}
}
else
{
strcat(ptr,"(");
_tree2str(t->left,ptr);
strcat(ptr,")");
}
if(t->right == NULL)
{
return;
}
else
{
strcat(ptr,"(");
_tree2str(t->right,ptr);
strcat(ptr,")");
}
}
char* tree2str(struct TreeNode* t) {
char* ptr = (char*)malloc(1024*1024);
_tree2str(t, ptr);
return ptr;
}