PTA二叉树求深度和叶子数

来源:互联网 发布:仙人下凡无人知 生肖 编辑:程序博客网 时间:2024/05/16 17:09
//头文件包含#include<stdlib.h>#include<stdio.h>#include<malloc.h>//函数状态码定义#define TRUE       1#define FALSE      0#define OK         1#define ERROR      0#define OVERFLOW   -1#define INFEASIBLE -2#define NULL  0typedef int Status;//二叉链表存储结构定义typedef int TElemType;typedef struct BiTNode{    TElemType data;    struct BiTNode  *lchild, *rchild;} BiTNode, *BiTree;//先序创建二叉树各结点Status CreateBiTree(BiTree &T){   TElemType e;   scanf("%d",&e);   if(e==0)T=NULL;   else{     T=(BiTree)malloc(sizeof(BiTNode));     if(!T)exit(OVERFLOW);     T->data=e;     CreateBiTree(T->lchild);     CreateBiTree(T->rchild);   }   return OK;}//下面是需要实现的函数的声明int GetDepthOfBiTree ( BiTree T);int LeafCount(BiTree T);//下面是主函数int main(){   BiTree T;   int depth, numberOfLeaves;   CreateBiTree(T);   depth= GetDepthOfBiTree(T); numberOfLeaves=LeafCount(T);   printf("%d %d\n",depth,numberOfLeaves);}/* 请在这里填写答案 */int GetDepthOfBiTree(BiTree T){      int d=0,d1=0,d2=0;      if(T==NULL) d=0;      else{            d1=GetDepthOfBiTree(T->lchild);            d2=GetDepthOfBiTree(T->rchild);            if(d1>d2) d=d1+1;            else d=d2+1;      }      return d;}int LeafCount(BiTree T){      int l=0,l1=0,l2=0;      if(T==NULL) l=0;      else if(T!=NULL&&T->lchild==NULL&&T->rchild==NULL) l=1;      else{            l1=LeafCount(T->lchild);            l2=LeafCount(T->rchild);            l=l1+l2;      }      return l;}



原创粉丝点击