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

来源:互联网 发布:dota2数据分析师 编辑:程序博客网 时间:2024/05/15 16:18

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

Time Limit: 1000MS Memory Limit: 65536KB

Problem Description

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

Input

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

Output

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

Example Input

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

Example Output

3

#include <bits/stdc++.h>using namespace std;struct node{    char data;    struct node *l,*r;};char st[100];int k;struct node *creat(){    struct node *root;    if(st[++k]==',')    {        return NULL;    }    else    {        root = new struct node;        root ->data = st[k];        root ->l = creat();        root ->r = creat();    }    return root;}int leave(struct node *root){    if(root==NULL) return 0;    else if(root->l==NULL&&root->r==NULL)    {        return 1;    }    else    {        return leave(root->l)+leave(root->r);    }}int main(){    struct node *root;    while(~scanf("%s",st))    {        k = -1;        root = new struct node;        root = creat();        printf("%d\n",leave(root));    }    return 0;}


阅读全文
1 0