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

二叉树之统计叶子数

2016-06-23 21:58 405 查看
数据结构实验之二叉树三:统计叶子数

Time Limit: 1000MS Memory limit: 65536K

题目描述

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

输入

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

输出

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

示例输入

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

示例输出

3
#include <stdio.h>  #include <string.h>  #include <malloc.h>    typedef struct node  {      int data;      struct node * left;      struct node * right;  } tree;  char a[55],c;  int ans,l;  int sum;  tree * creat(tree * head)  {      c=a[ans++];        if(c!=','&&ans<=l)      {          head=(tree*)malloc(sizeof(tree));          head->data=c;          head->left=creat(head->left);          head->right=creat(head->right);      }      else head=NULL;      return head;  }  void yezi(tree * head)  {      if(head!=NULL)      {          if(head->left==NULL&&(head->right==NULL)) sum++;          yezi(head->left); yezi(head->right);      }  }  int main()  {        while(~scanf("%s",a))      {          ans=0; sum=0;          l=strlen(a);          tree * head;          head=creat(head);          yezi(head);          printf("%d\n",sum);      }        return 0;  }  
                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息