数据结构实验之二叉树三:统计叶子数

来源:互联网 发布:药智数据网 编辑:程序博客网 时间:2024/05/29 07:41
Problem Description已知二叉树的一个按先序遍历输入的字符序列,如abc,,de,g,,f,,, (其中,表示空结点)。请建立二叉树并求二叉树的叶子结点个数。Input连续输入多组数据,每组数据输入一个长度小于50个字符的字符串。Output输出二叉树的叶子结点个数。Example Inputabc,,de,g,,f,,,Example Output3Hint  


#include<stdio.h>#include<stdlib.h>#include<iostream>using namespace std;typedef struct BiTNode{char data;struct BiTNode *lchild,*rchild;}BiTNode,*BiTree;int count=0;char ch[51];int cnt;BiTree creat(){BiTNode *T;if(ch[++cnt]==',')T=NULL;else{T=new BiTNode;T->data=ch[cnt];T->lchild=creat();T->rchild=creat();}return T;}int leaves(BiTree T){if(T==NULL)return 0;else if(T->rchild==NULL&&T->lchild==NULL)return 1;elsereturn leaves(T->rchild)+leaves(T->lchild);}int main(){while(~scanf("%s",ch)){cnt=-1;int n;BiTNode *T;T=creat();n=leaves(T);   printf("%d\n",n);}return 0;}