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

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

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 ****************************************************/

 

posted @ 2016-11-04 22:21  Leroscox  阅读(500)  评论(0编辑  收藏  举报