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

    xiaoxiao2026-09-01  11

    题目描述

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

    输入

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

    输出

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

    示例输入

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

    示例输出

    3 #include<stdio.h> #include<string.h> #include<stdlib.h> typedef char Status; typedef char telemtype; typedef struct BiTNode {     Status data;     struct BiTNode *lchild,*rchild; }*BiTree; Status str[51]; int i,count; int CreateBiTree(BiTree &T)//生成二叉树 {         if(str[i++]==',') T=NULL;         else         {         T=(BiTree)malloc(sizeof(BiTNode));         if(!T)         exit(0);         T->data=str[i-1];         CreateBiTree(T->lchild);         CreateBiTree(T->rchild);        }     return 1; } void CountLeaf(BiTree T,int &count)//树叶子的统计 {     if(T)     {         if((!T->rchild)&&(!T->lchild))             count++;         CountLeaf(T->rchild,count);         CountLeaf(T->lchild,count);     } } int main() {     BiTree T;     while(~scanf("%s",str))     {        i=0;        CreateBiTree(T);//生成树;       count=0;       CountLeaf(T,count);//树叶子的统计       printf("%d\n",count);     }     return 0; }
    转载请注明原文地址: https://ju.6miu.com/read-1311790.html
    最新回复(0)