思路1:
直接遍历这棵二叉树,求叶子结点数
代码1:
int n=0;
int count(BTNode *t){
//int n=0;
if(t){
if(t->lchild==NULL&&t->rchild==NULL)
++n;
count(t->lchild);
count(t->rchild);
}
return n;
}
思路2:
先求左子树叶子结点数,再求右子树叶子结点数,返回二者之和
代码2:
int count2(BTNode *t){
int n1,n2;
if(t==NULL)
return 0;
else if(t->lchild==NULL&&t->rchild==NULL)
return 1;
else
{
n1=count2(t->lchild);
n2=count2(t->rchild);
return n1+n2;
}
}
测试:
#include<stdio.h>
#include <stdlib.h>
#include<math.h> //数学函数,求平方根、三角函数、对数函数、指数函数...
//用于使用c++的输出语句
#include<iostream>
using namespace std;
typedef struct BTNode
{
char data;
struct BTNode *lchild;
struct BTNode *rchild;
}BTNode;
void createBiTree(BT