数据结构实验之二叉树三:统计叶子数
Time Limit: 1000MS Memory Limit: 65536KB
Problem Description
已知二叉树的一个按先序遍历输入的字符序列,如abc,,de,g,,f,,, (其中,表示空结点)。请建立二叉树并求二叉树的叶子结点个数。
Input
连续输入多组数据,每组数据输入一个长度小于50个字符的字符串。
Output
输出二叉树的叶子结点个数。
Example Input
abc,,de,g,,f,,,
Example Output
3
DQE:
水题一道。
1 #include <iostream> 2 #include <cstdio> 3 4 using namespace std; 5 6 struct Tree 7 { 8 char c; 9 Tree *lt,*rt; 10 }; 11 12 Tree *creat(char *&xx) 13 { 14 if(*xx==‘\0‘) 15 return NULL; 16 if(*xx==‘,‘) 17 { 18 xx++; 19 return NULL; 20 } 21 Tree *r=new Tree; 22 r->c=*xx++; 23 r->lt=creat(xx); 24 r->rt=creat(xx); 25 return r; 26 } 27 28 int visit(Tree *r) 29 { 30 if(r==NULL) 31 return 0; 32 if(r->lt==NULL&&r->rt==NULL) 33 return 1; 34 return visit(r->lt)+visit(r->rt); 35 } 36 37 int main() 38 { 39 Tree *root; 40 char xx[55],*p; 41 while(scanf("%s",xx)!=EOF) 42 { 43 p=xx; 44 root=creat(p); 45 printf("%d\n",visit(root)); 46 } 47 return 0; 48 } 49 50 /*************************************************** 51 User name: *** 52 Result: Accepted 53 Take time: 0ms 54 Take Memory: 160KB 55 Submit time: 2016-11-03 18:21:59 56 ****************************************************/
时间: 2024-10-10 07:13:24