您的位置:首页 > 理论基础 > 数据结构算法

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

2016-08-16 19:35 218 查看

题目描述

已知二叉树的一个按先序遍历输入的字符序列,如abc,,de,g,,f,,, (其中,表示空结点)。请建立二叉树并求二叉树的叶子结点个数。

输入

连续输入多组数据,每组数据输入一个长度小于50个字符的字符串。

输出

输出二叉树的叶子结点个数。

示例输入

abc,,de,g,,f,,,

示例输出

3
#include<stdio.h>#include<string.h>#include<stdlib.h>typedef char Status;typedef char telemtype;typedef struct BiTNode{    Status data;    struct BiTNode *lchild,*rchild;}*BiTree;Status str[51];int i,count;int CreateBiTree(BiTree &T)//生成二叉树{        if(str[i++]==',') T=NULL;        else        {        T=(BiTree)malloc(sizeof(BiTNode));        if(!T)        exit(0);        T->data=str[i-1];        CreateBiTree(T->lchild);        CreateBiTree(T->rchild);       }    return 1;}void CountLeaf(BiTree T,int &count)//树叶子的统计{    if(T)    {        if((!T->rchild)&&(!T->lchild))            count++;        CountLeaf(T->rchild,count);        CountLeaf(T->lchild,count);    }}int main(){    BiTree T;    while(~scanf("%s",str))    {       i=0;       CreateBiTree(T);//生成树;      count=0;      CountLeaf(T,count);//树叶子的统计      printf("%d\n",count);    }    return 0;}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: