请帮忙改下我的先序和中序创建二叉树的函数

qqweinizhizhuo 2009-04-28 05:38:36
函数运行的结果不对,而且还有错误
我感觉是在下面递归的时候,里面的参数是有问题的
请帮忙看下我该怎么修改
typedef struct binary
{
char data;
struct binary *left;
struct binary *right;
}Binary,*Tree;

Tree CreatTree(char A[],char B[],int n)
{
Tree p;
if(n<=0) return NULL;
p=(Tree)malloc(sizeof(Binary));
if(p==NULL) return NULL;
p->data=*A;
for(char *i=B;i<B+n;i++)
{
if(*i==*A) break;
}
p->left=CreatTree(A+1,B,i-B);
p->right=CreatTree(A+(i-B)+1,B,(n-(i-B)-1));
return p;
}
...全文
93 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
cyldf 2009-04-28
  • 打赏
  • 举报
回复
调试了一下,没发现有什么问题啊。
楼主把问题说明白
qqweinizhizhuo 2009-04-28
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 pengzhixi 的回复:]
p->data=*A; //p->data是一个字符,但是你的A是个字符数组啊
[/Quote]


*A就是A[0] 这个没问题

回复楼上的 楼上

这个和我的程序没什么区别呀
pengzhixi 2009-04-28
  • 打赏
  • 举报
回复
p->data=*A; //p->data是一个字符,但是你的A是个字符数组啊
cyldf 2009-04-28
  • 打赏
  • 举报
回复

for(char *i=B;i <B+n;i++)
{
if(*i==*A) break;
}
p->left=CreatTree(A+1,B,i-B);
p->right=CreatTree(A+(i-B)+1,B,(n-(i-B)-1));

改成
for(int i=0;i <n;i++)
{
if( A[0]== B[i]) break;
}
p->left=CreatTree(A+1,B,i);
p->right=CreatTree(A+i+1,B+i+1,n-i-1);
试试
  • 打赏
  • 举报
回复
http://www.cppblog.com/xlyz/archive/2009/02/10/73414.html

给个你参考下吧
liliangbao 2009-04-28
  • 打赏
  • 举报
回复
帮顶~

65,210

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧