统计二叉树中叶子结点个数(数据结构c语言编程)
#include
#include
#define MaxSize 100
typedef char ElemType;
typedefstruct node
{
ElemType data; //数据元素
struct node *lchild; //指向左孩子
struct node *rchild; //指向右孩子
} BTNode;
void CreateBTNode(BTNode *&b,char *str) //由str串创建二叉链
{
BTNode *St[MaxSize],*p=NULL;
int top=-1,k,j=0;
charch;
b=NULL; ch=str[j]; while (ch!='\0') { switch(ch) { //建立的二叉树初始时为空 //str未扫描完时循环 case '(':top++;St[top]=p;k=1; break; case ')':top--;break; //为左结点 //为右结点 case ',':k=2; break; default:p=(BTNode *)malloc(sizeof(BTNode)); p->data=ch;p->lchild=p->rchild=NULL;
if (b==NULL) //p指向二叉树的根结点 b=p;
else //已建立二叉树根结点 {
switch(k)
{
case 1:St[top]->lchild=p;break;
case 2:St[top]->rchild=p;break;
}
}
}
j++;
ch=str[j];
}
}
intLeafNodes(BTNode *b) //求二叉树b的叶子结点个数