#define MAX_SIZE 50000
void transfer_bitree(struct TreeNode* t, char *s, int *len)
{
if (t) {
*len += sprintf(s + *len, "%d", t->val);
if (t->left || t->right) {
*len += sprintf(s + *len, "%s", "(");
transfer_bitree(t->left, s, len);
*len += sprintf(s + *len, "%s", ")");
}
if (t->right) {
*len += sprintf(s + *len, "%s", "(");
transfer_bitree(t->right, s, len);
*len += sprintf(s + *len, "%s", ")");
}
}
}
char * tree2str(struct TreeNode* t)
{
char *str = malloc(MAX_SIZE);
int len = 0;
transfer_bitree(t, str, &len);
str[len] = '\0';
return str;
}