您的位置:首页 > 其它

PTA二叉树求深度和叶子数

2017-11-19 09:55 405 查看
//头文件包含
#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  0
typedef 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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐