新人学习不知道为什么在主函数中没有调用输入的语句,好像直接跳过了,那位帮忙检查下,大概是在插入的时候出错了
#include<stdio.h>#include<stdlib.h>
#include<string.h>
#define max 100
typedef struct BiTNode
{
char date;
struct BiTNode *lchild;
struct BiTNode *rchild;
}BiTNode,*BiTree;
int layer(BiTree b,int *a);
int crtTNode(BiTree *t);
int treeprint(BiTree t,int level);
int insert(BiTree *t,char x);
int main()
{
BiTree bt;int m=0,n=0;
printf("输入需要进入二叉树的字符串#表示为空:\n");
crtTNode(&bt);
treeprint(bt,n);
printf("输入需要插入的字母:\n");
char z;
scanf("%c",&z);
insert(&bt,z);
treeprint(bt,n);
layer(bt,&m);
}
int crtTNode(BiTree *t)
{
char ch;
scanf("%c",&ch);
if(ch=='#') *t=NULL;
else
{
*t=(BiTree)malloc(sizeof(BiTNode));
(*t)->date=ch;
crtTNode(&(*t)->lchild);
crtTNode(&(*t)->rchild);
}
return 1;
}
int layer(BiTree b,int *a)
{
if(b)
{
layer(b->lchild,&(*a));
printf("%c",b->date);
*a=*a+1;
layer(b->rchild,&(*a));
}
return 1;
}
int treeprint(BiTree t,int level)
{
if(!t)return 0;
treeprint(t->rchild,level+1);
for(int i=0;i<level;i++)
printf(" ");
printf("%c\n",t->date);
treeprint(t->lchild,level+1);
return 1;
}
int insert(BiTree *t,char x)
{
if(*t==NULL)
{
*t=(BiTree)malloc(sizeof(BiTNode));
if(*t==NULL) printf("can't malloc ,insert operation failed");
(*t)->date=x;
(*t)->lchild=(*t)->rchild=NULL;
return 1;
}
if(x>(*t)->date)
{
insert(&(*t)->rchild,x);
return 1;
}
if(x<(*t)->date)
{
insert(&(*t)->lchild,x);
return 1;
}
}