#include<stdio.h>
#include<stdlib.h>
typedef struct TNode{//二叉树结构
char data;//结点的值
TNode *lchild;//左子树
TNode *rchild;//右子树
}*BiTree;
void CreateBiTree(BiTree &T)//中序遍历方式创建二叉树 ,输入#代表该结点为空
{
char ch;
ch=getchar();
if(ch=='#')
T=NULL;
else//结点非空
{
T=new TNode;
T->data =ch;
CreateBiTree(T->lchild );
CreateBiTree(T->rchild );
}
}
int CountLeaf(BiTree T)
{
static int LeafNum=0;//叶子初始数目为0,使用静态变量
if(T)
{
if((!T->lchild) &&(!T->rchild))//为叶子结点
LeafNum++;//叶子数目加1
else //不为叶子结点
{
CountLeaf(T->lchild );//递归统计左子树叶子数目
CountLeaf(T->rchild );//递归统计右子树叶子数目
}
}
return LeafNum;
}
int main()
{
BiTree T;
int leafNum;
printf("请输入中序遍历的二叉树序列(#号代表该结点为空):如(ABC##DE#G##F###)\n");
CreateBiTree(T);
leafNum=CountLeaf(T);
printf("该二叉树的叶子结点数是:%d\n",leafNum);
return 0;
}
#include<stdlib.h>
typedef struct TNode{//二叉树结构
}*BiTree;
void CreateBiTree(BiTree &T)//中序遍历方式创建二叉树 ,输入#代表该结点为空
{
}
int CountLeaf(BiTree T)
{
}
int main()
{
}