问题描述
- 知道二叉树的中序和后序建立二叉树的代码哪里有问题?为什么只能建立3个结点?
-
#include
#include
#include
char zs[100];
char hs[100];
struct node
{
char data;
struct node l;
struct node *r;
};
int treedepth(struct node *TT)
{
int i=0,j=0;
if(!TT) return 0;
i=treedepth(TT->l);
j=treedepth(TT->r);
return i>j?i+1:j+1;
}
struct node * creat(struct node *&T,char zs[],char hs[],int len)
{
// printf("%d **
",len);
if(len==0) T=NULL;
else
{int i; for(i=0;i<=len-1;i++) { if (zs[i]==hs[len-1]) break; } // printf("%d * * * *%d ",i,len); if(i>=len) T=NULL; else { T=(struct node *)malloc(sizeof(struct node)); T->data=hs[len-1]; // printf("%c",hs[len-1]); if(i==0) T->l=NULL; else T->l=creat(T->l,zs,hs,i); if(i==len-1) T->r=NULL; else T->r=creat(T->r,zs+i-1,hs+i,len-i-1); } } return T;
}
void travel(struct node TT)
{
if(TT)
{
printf("%c**
",TT->data);
travel(TT->l);
travel(TT->r);
}
}
int main()
{
int t;
scanf("%d",&t);
int len;
struct node *TT;
while(t--)
{
struct node *T;
T=NULL;
scanf("%s%s",zs,hs);
len=strlen(zs);
TT=creat(T,zs,hs,len);
travel(TT);
printf("%d
",treedepth(TT));
}
}
解决方案
解决方案二:
看下代码是不是有问题造成的。
解决方案三:
建议楼主单步调试。
单步调试和设断点调试(VS IDE中编译连接通过以后,按F10或F11键单步执行,按Shift+F11退出当前函数;在某行按F9设断点后按F5执行停在该断点处。)是程序员必须掌握的技能之一。
时间: 2024-10-31 04:30:35