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

来源:互联网 发布:sql server时间戳转换 编辑:程序博客网 时间:2024/05/29 07:00

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


Problem Description

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

Input

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

Output

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

Example Input

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

Example Output

3

解题感触
调试这道题花费了很长时间,程序运行错误。主要原因是输入数据有多组,i没有置零,另外,程序终止原因待定。。。。。


代码

#include <stdio.h>#include <stdlib.h>char str[51];int i;typedef struct BiNode{    char data;    struct BiNode *lchild,*rchild;}BiNode,*BiTree;BiTree creatBiTree(BiTree T){    char temp=str[i++];    if(temp==',')        T=NULL;    else{        T=(BiTree)malloc(sizeof(BiNode));        T->data=temp;        T->lchild=creatBiTree(T->lchild);        T->rchild=creatBiTree(T->rchild);    }    return T;}int LeaveCount(BiTree T){    if(T==NULL)        return 0;   if(T->lchild==NULL&&T->rchild==NULL)   {       return 1;   }else        return LeaveCount(T->lchild)+LeaveCount(T->rchild);}int main(){    while(~scanf("%s",str))    {        i=0;//修改处        BiTree T;        T=creatBiTree(T);        printf("%d\n",LeaveCount(T));    }    return 0;}
原创粉丝点击