不好意思,我没有学过C,只学过C++,现在的教材是C 版本的,搞得现在用的有点乱,C和C++好像大部分差不多把
你这程序问题满多的
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
int leaf = 0;
char ch;
typedef int TElemType;
typedef struct BiTNode
{
TElemType data;
struct BiTNode *lchild,*rchild;
}BiTNode,*BiTree;
void CreateBiTree(BiTree &T)//生成二叉树
{
scanf("%c", &ch);
if(ch == ' ')
{
T = NULL;
}
else
{
if(!(T = (BiTNode *)malloc(sizeof(BiTNode))))
{
exit(1);
}
T -> data = ch; //生成根节点
CreateBiTree(T -> lchild);//生成左子树
CreateBiTree(T -> rchild);//生成右子树
}
}
void mid( BiTree root) //中序遍历并打印结点
{
if (root != NULL)
{
mid(root ->lchild);
printf("%c ", root -> data);
mid(root -> rchild);
}
}
void LeafNum( BiTree root)//统计叶子节点个数
{
if(root!=NULL)
{
LeafNum(root->lchild);
if(root->lchild == NULL && root->rchild == NULL)
{
leaf += 1;
}
LeafNum(root->rchild);
}
}
int main()
{
BiTree Q;
printf("Enter ch: ");
CreateBiTree(Q);
mid(Q);
LeafNum(Q);
printf("\nleaf = %d\n", leaf);
getch();
return 0;
}
对找下