首页 > 学院 > 开发设计 > 正文

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

2019-11-10 19:50:51
字体:
来源:转载
供稿:网友

PRoblem Description

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

Input

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

Output

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

Example Input

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

Example Output

3

#include<stdio.h>#include<string.h>#include<stdlib.h>typedef struct node{    char data;    struct node *lc,*rc;}bitree;int i=-1;int ans;bitree * pre_create(char str[]){    bitree *t;    if(str[++i]!=',')    {        t=(bitree *)malloc(sizeof(bitree));        t->data=str[i];        t->lc=pre_create(str);        t->rc=pre_create(str);    }    else    {        t=NULL;    }    return t;}void pre_show(bitree * t){    if(t)    {        if(t->lc==NULL&&t->rc==NULL)        {            ans++;        }        pre_show(t->lc);        pre_show(t->rc);    }}int main(){    char str[101];    bitree * tree;    while(scanf("%s",str)!=EOF)    {        i=-1;        ans=0;        tree=pre_create(str);        pre_show(tree);        printf("%d/n",ans);    }    return 0;}
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表