代码如下:
#include<stdio.h>
#include<stdlib.h>
#include <string.h>
using namespace std;
typedef struct BTNode//建立叶子节点
{
char data;//存放数据
struct BTNode *lchild;//左孩子
struct BTNode *rchild;//右孩子
}BTNode,*BTtree;
void createBTtree(BTtree &L)//创建一棵二叉树
{
char ch;
scanf("%c",&ch);
if(ch='#')//若输入为#,则为空树
{
L=NULL;
}
else
{
L=new BTNode;//new一个节点
L->data=ch;//存入数据
}
createBTtree(L->lchild);//递归调用自己
createBTtree(L->rchild);
}
int leafnodenumber(BTtree &ROOT)//得到这颗二叉树的叶子节点
{
int lnum,rnum;
if(ROOT==NULL)//如果根节点为null,返回0
return 0;
if(ROOT->lchild==NULL&&ROOT->rchild==NULL)//左右孩子为null,返回1
return 1;
lnum=leafnodenumber(ROOT->lchild);//递归调用自己
rnum=leafnodenumber(ROOT->rchild);
return(lnum+rnum);
}
int main()
{
int i;
BTtree T;
createBTtree(T);
i=leafnodenumber(T);//把叶子节点数给i
printf("%d\n",i);//输出
return 0;
}