你需要採用前序遍歷的方式,將一個二叉樹轉換成一個由括號和整數組成的字符串。
空節點則用一對空括號 “()” 表示。而且你需要省略所有不影響字符串與原始二叉樹之間的一對一映射關係的空括號對。
void _tree2str(struct TreeNode* t,char* str)
{
if(t == NULL)
return ;
char buff[12];//12是數字的位數,編譯器最大應該就到12
sprintf(buff,"%d",t->val);
strcat(str,buff);
//左子樹
if(t->left == NULL)
{
if(t->right == NULL)
return ;
else
strcat(str,"()");
}
else
{
strcat(str,"(");
_tree2str(t->left,str);
strcat(str,")");
}
//右子樹
if(t->right == NULL)
{
return ;
}
else
{
strcat(str,"(");
_tree2str(t->right,str);
strcat(str,")");
}
}
char* tree2str(struct TreeNode* t)
{
char* str = (char*)malloc(1024*1024);
_tree2str(t,str);
return str;
}