想知道为什么这个二叉树运行失败!
#include <stdio.h>
#include <stdlib.h>
#include<string.h>
#define MAXTSIZE 100
typedef struct node{
char data ;
struct node *lchild;
struct node *rchild;
}BiTNode;
BiTNode *creatBiTNode( )//递归构建一颗二叉树
{
char k;
k=getchar();
if(k=='#')
return NULL;
else
{
BiTNode *T=(BiTNode *)malloc(sizeof(BiTNode)); //动态分配存储空间
T->data=k;
T->lchild=creatBiTNode();
T->rchild=creatBiTNode();
return T;
}
}
void destroy(BiTNode *T)//递归摧毁二叉树
{
if(T)
{
destroy(T->lchild);
destroy(T->rchild);
free(T);
}
}
void xian(BiTNode *T)//先序遍历二叉树
{
if(T)
{
printf("%2c",T->data);//输出根节点
xian(T->lchild);//遍历左子树
xian(T->rchild);//遍历右子树
}
}
void zhong(BiTNode *T)//中序遍历二叉树
{
if(T)
{
zhong(T->lchild);//遍历左子树
printf("%2c",T->data);//输出根节点
zhong(T->rchild);//遍历右子树
}
}
void hou(BiTNode *T)//后序遍历二叉树
{
if(T)
{
xian(T->lchild);//遍历左子树
xian(T->rchild);//遍历右子树
printf("%2c",T->data);//输出根节点
}
}
int tongji(BiTNode *T)//递归算法统计叶子节点的个数
{
if(T==NULL)
return 0;
else if((T->lchild==NULL)&&(T->rchild==NULL))
return 1;
else
return tongji(T->lchild)+tongji(T->rchild);
}
int shendu(BiTNode *T)
{
if(T==NULL)
return 0;
else if((T->lchild==NULL)&&T->rchild==NULL)
{
printf("%2c",T->data);
return 1;
}
else
{
int left=shendu(T->lchild)+1;
int right=shendu(T->rchild)+1;
if(left>=right)
return left;
else
return right;
}
}
int main(void)
{
printf("构造一棵二叉树");
BiTNode *T= creatBiTNode( );
printf("先序遍历的结果为:");
xian(T);
printf("中序遍历的结果为:");
zhong(T);
printf("后序遍历的结果为");
hou(T);
printf("统计深度,输出叶子节点信息");
shendu(T);
tongji(T);
//printf("摧毁二叉树");
//destroy(T);
printf("END");
return 0;
}