算法
int Leaves(Tree t){
if(t==NULL) return 0;
if(t->fch==NULL) return 1+Leaves(t->nsib);
else return Leaves(t->fch) +Leaves(t->nsib);
}
测试环境
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define maxsize 100
#define ElemType char
typedef struct node{
ElemType date;
struct node *fch,*nsib;
}Node,*Tree;
//abd##eh###cfi#m###g#jk#ln####
Tree CreateBiTree();
void Traverse(Tree p);
int Leaves(Tree t);
int main(){
Tree t = CreateBiTree();
// Traverse(t);
printf("%d",Leaves(t));
return 0;
}
int Leaves(Tree t){
if(t==NULL) return 0;
if(t->fch==NULL) return 1+Leaves(t->nsib);
else return Leaves(t->fch) +Leaves(t->nsib);
}
void Traverse(Tree p){
if(p==NULL){
return;
}
else{
Traverse(p->fch);
printf("%c",p->date);
Traverse(p->nsib);
}
return;
}
Tree CreateBiTree(){
Tree p;
char a;
scanf("%c",&a);
if(a=='#')
p=NULL;
else{
p=(Tree)malloc(sizeof(Node));
p->date=a;
p->fch=CreateBiTree();
p->nsib=CreateBiTree();
}
return p;
}