#include <stdio.h>
typedef struct Node{
char data;
Node *lson;
Node *rson;
}Tree, *BeTree;
//创建
void CreateBiTree (BeTree &rt){
char data;
scanf("%c", &data);
if (data == '#'){
rt = NULL;
} else {
rt = new Tree;
rt->data = data;
CreateBiTree(rt->lson);
CreateBiTree(rt->rson);
}
}
//先序
void PreOrderTraverse (BeTree &rt){
if (rt != NULL){
printf("%c",rt->data);
PreOrderTraverse(rt->lson);
PreOrderTraverse(rt->rson);
}
}
//中序
void InOrderTraverse (BeTree &rt){
if (rt != NULL){
InOrderTraverse(rt->lson);
printf("%c", rt->data);
InOrderTraverse(rt->rson);
}
}
//后序
void PostOrderTraverse (BeTree &rt){
if (rt != NULL){
PostOrderTraverse(rt->lson);
PostOrderTraverse(rt->rson);
printf("%c", rt->data);
}
}
//深度
int Depth (BeTree &rt){
if (rt == NULL){
return 0;
} else {
return (Depth(rt->lson)>Depth(rt->rson)?Depth(rt->lson):Depth(rt->rson)) + 1;
}
}
//节点数
int NodeCount (BeTree &rt){
if (rt == NULL){
return 0;
} else {
return NodeCount(rt->lson) + NodeCount(rt->rson) + 1;
}
}
//叶子结点数
int count;
int LeavesNodeCount (BeTree &rt){
if (rt){
if(rt->lson == NULL && rt->rson == NULL) {
count++;
}
LeavesNodeCount(rt->lson);
LeavesNodeCount(rt->rson);
}
return count;
}
int main()
{
BeTree rt;
CreateBiTree(rt);
count = 0;
printf("%d",LeavesNodeCount(rt));
return 0;
}