你需要采用前序遍历的方式,将一个二叉树转换成一个由括号和整数组成的字符串。
空节点则用一对空括号 “()” 表示。而且你需要省略所有不影响字符串与原始二叉树之间的一对一映射关系的空括号对。

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;
}
二叉树转括号字符串
本文介绍了一种算法,该算法能将二叉树结构转换为由括号和整数组成的字符串,通过前序遍历实现。文章详细解释了如何在字符串中表示空节点,并省略不必要的空括号,保持树结构的唯一性。
&spm=1001.2101.3001.5002&articleId=85936334&d=1&t=3&u=696cb6fc7fe34a268df199520d580ebb)
758

被折叠的 条评论
为什么被折叠?



