#include <iostream.h>
typedef char TElemType;
typedef struct BiTNode{
TElemType data;
struct BiTNode *lchild,*rchild; //左右孩子指针
}BiTNode,*BiTree;
void CreateBiTree(BiTree &T)
{//按先序次序输入二叉树中结点的值(一个字符),创建二叉链表表示的二叉树T
char ch;
cin >> ch;
if(ch=='#') T=NULL;//递归结束,建空树
else{
T=new BiTNode;
T->data=ch;//生成根结点
CreateBiTree(T->lchild);//递归创建左子树
CreateBiTree(T->rchild);//递归创建右子树
} //else
}
int c1(BiTree T)
{
if(T==NULL) return 0; // 空树,则结点个数为0,递归结束
else if (T->lchild==NULL&&T->rchild==NULL)return 1;
else return c1(T->lchild)+ c1(T->rchild);
//否则结点个数为左子树的结点个数+右子树的结点个数+1
}
int n2=0;
void c2(BiTree T)
{
if(T==NULL) return ; // 空树,则结点个数为0,递归结束
else if (T->lchild==NULL&&T->rchild==NULL)n2++;
else{ c2(T->lchild);
c2(T->rchild);}
//否则结点个数为左子树的结点个数+右子树的结点个数+1
}
void c3(BiTree T,int &n3)
{
if(T==NULL) return ; // 空树,则结点个数为0,递归结束
else if (T->lchild==NULL&&T->rchild==NULL)n3++;
else{ c3(T->lchild,n3);
c3(T->rchild,n3);}
//否则结点个数为左子树的结点个数+右子树的结点个数+1
}
void main()
{BiTree T;int n=0;
CreateBiTree(T);
//cout<<c1(T);
//c2(T);cout<<n2;
c3(T,n);cout<<n;
}
typedef char TElemType;
typedef struct BiTNode{
TElemType data;
struct BiTNode *lchild,*rchild; //左右孩子指针
}BiTNode,*BiTree;
void CreateBiTree(BiTree &T)
{//按先序次序输入二叉树中结点的值(一个字符),创建二叉链表表示的二叉树T
char ch;
cin >> ch;
if(ch=='#') T=NULL;//递归结束,建空树
else{
T=new BiTNode;
T->data=ch;//生成根结点
CreateBiTree(T->lchild);//递归创建左子树
CreateBiTree(T->rchild);//递归创建右子树
} //else
}
int c1(BiTree T)
{
if(T==NULL) return 0; // 空树,则结点个数为0,递归结束
else if (T->lchild==NULL&&T->rchild==NULL)return 1;
else return c1(T->lchild)+ c1(T->rchild);
//否则结点个数为左子树的结点个数+右子树的结点个数+1
}
int n2=0;
void c2(BiTree T)
{
if(T==NULL) return ; // 空树,则结点个数为0,递归结束
else if (T->lchild==NULL&&T->rchild==NULL)n2++;
else{ c2(T->lchild);
c2(T->rchild);}
//否则结点个数为左子树的结点个数+右子树的结点个数+1
}
void c3(BiTree T,int &n3)
{
if(T==NULL) return ; // 空树,则结点个数为0,递归结束
else if (T->lchild==NULL&&T->rchild==NULL)n3++;
else{ c3(T->lchild,n3);
c3(T->rchild,n3);}
//否则结点个数为左子树的结点个数+右子树的结点个数+1
}
void main()
{BiTree T;int n=0;
CreateBiTree(T);
//cout<<c1(T);
//c2(T);cout<<n2;
c3(T,n);cout<<n;
}