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; }
相关文章推荐
- PTA 二叉树求深度和叶子数(20 分)
- c++实现二叉树的查找,插入,删除,深度,叶子节点数,度为1的节点数(递归方法)及运行实例结果
- 利用栈结构实现二叉树的非递归遍历,求二叉树深度、叶子节点数、两个结点的最近公共祖先及二叉树结点的最大距离
- 求二叉树叶子节点的最浅深度
- c++实现二叉树的查找,插入,删除,深度,叶子节点数,度为1的节点数(递归方法)及运行实例结果
- 二叉树求深度和叶子数(20 分)
- 求二叉树最高叶子节点的深度
- 二叉树的创建、遍历、深度、叶子节点数
- 获取二叉树深度叶子数
- 数据结构与算法 -- 二叉树链式详解((非)/递归遍历,叶子个数,深度计算)
- 八.二叉树各种操作的C语言实现 深度遍历求深度,广度遍历求深度,交换左右子树,求叶子节点数
- 先序遍历创建二叉树,对二叉树统计叶子节点个数和统计深度(创建二叉树时#代表空树,序列不能有误)c语言
- c++实现二叉树的查找,插入,删除,深度,叶子节点数,度为1的节点数(递归方法)及运行实例结果
- 二叉树的前、中、后序遍历(递归和非递归)、层序遍历、深度、叶子节点个数
- c++实现二叉树的查找,插入,删除,深度,叶子节点数,度为1的节点数(递归方法)及运行实例结果
- 6-4 二叉树求深度和叶子数
- C++二叉树的构建及求深度,叶子数量,层次遍历
- 二叉树叶子节点及深度
- 二叉树递归的基本操作(求叶子数目、深度、路径汇总)
- 二叉树求深度和宽度,叶子节点数,总结点数