【问题描述】

计算二叉树的深度和叶子结点数

【输入形式】

输入二叉树的先序遍历序列建立二叉树。

【输出形式】

输出二叉树的叶子结点数和深度。

【样例输入】

A

B

C

#

#

#

#

【样例输出】

Leaves:1

Depth:3

求给定二叉树的深度:

二叉树的深度就是二叉树中结点的最大层次。如果二叉树是空树,则深度为0;否则,分别求二叉树根左子树和右子树的深度,取其中最大值加一就是该 二叉树的最大深度。

递归计算公式为:Depth(T)={0;当T==NULL;                                                               }

{max(Depth(T->lchild),Depth(T->rchild))+1;当T!=NULL;}

如下:

int  depth(BiTree  t)
{
//此处补充代码,求取二叉树的深度int hl,hr;if(t==NULL)return 0;     //若数为空则返回0else{hl=depth(t->lchild);  //递归求左子树的深度hr=depth(t->rchild);  //递归求右子树的深度if(hl>hr)return (hl+1);else return (hr+1);}
}

求叶子结点数也可以通过递归的方法进行统计。

方法如下:

int  Leaves(BiTree  t)
{
//此处补充代码,统计二叉树中叶子结点数int count1,count2;if(t==NULL)return 0;   //数空elseif(t->lchild==NULL&&t->rchild==NULL)return 1;//为叶子结点else{count1=Leaves(t->lchild);//左子树叶子结点数count2=Leaves(t->rchild);//右子树叶子结点数return count1+count2;//返回叶子结点数}
}

完整带码如下:

#include  <stdio.h>
#include  <stdlib.h>
#include<malloc.h>
#define  MAX  20
//二叉链表结点定义
typedef  struct  BTNode
{char  data;struct  BTNode  *lchild;struct  BTNode  *rchild;
}*BiTree;void  createBiTree(BiTree  *t)
{
//此处补充代码,完成以先序遍历方式建立二叉树char s;BiTree q;s=getchar();getchar();if(s=='#'){*t=NULL;return;}q=(BiTree)malloc(sizeof(struct BTNode));q->data=s;*t=q;createBiTree(&q->lchild);createBiTree(&q->rchild);
}
int  Leaves(BiTree  t)
{
//此处补充代码,统计二叉树中叶子结点数int count1,count2;if(t==NULL)return 0;   //数空elseif(t->lchild==NULL&&t->rchild==NULL)return 1;//为叶子结点else{count1=Leaves(t->lchild);//左子树叶子结点数count2=Leaves(t->rchild);//右子树叶子结点数return count1+count2;//返回叶子结点数}
}int  depth(BiTree  t)
{
//此处补充代码,求取二叉树的深度int hl,hr;if(t==NULL)return 0;     //若数为空则返回0else{hl=depth(t->lchild);  //递归求左子树的深度hr=depth(t->rchild);  //递归求右子树的深度if(hl>hr)return (hl+1);else return (hr+1);}
}
int  main()
{
//此处补充代码,按要求输出二叉树的叶子结点数和深度BiTree p;createBiTree(&p);printf("Leaves:%d\n",Leaves(p));printf("Depth:%d\n",depth(p));return  0;
}

运行结果如下:

计算二叉树的深度和叶子结点数(递归算法实现)相关推荐

  1. 计算二叉树的深度和叶子结点数

    目录 一.求给定二叉树的深度 二.求给定二叉树中的叶子结点数 三.例题 一.求给定二叉树的深度 二叉树的深度就是二叉树中结点的最大层次.如果二叉树是空树,则深度为0:否则,可分别求二叉树根的左子树和右 ...

  2. 二叉树遍历算法的应用——计算二叉树的深度、计算二叉树的节点总数、计算二叉树的叶子节点数(均采用递归的思想)

    //二叉树遍历算法的应用 //1.计算二叉树的深度 int Depth(BitTree T){if(T==NULL)return 0;//如果是空树,返回0else{m=Depth(T->lch ...

  3. 7-10 先序序列创建二叉树,输出先序序列、中序序列、后序序列并输出叶子结点数 (10 分)

    7-10 先序序列创建二叉树,输出先序序列.中序序列.后序序列并输出叶子结点数 (10 分) 对于给定的二叉树,输出其先序序列.中序序列.后序序列并输出叶子结点数. 输入格式: 二叉树的先序遍历序列. ...

  4. 数据结构:二叉树的深度与叶子节点数

    输入二叉树的先序序列,计算并输出该二叉树的深度与叶子节点个数.请将代码填写完整. 例如,下面二叉树对应的先序序列为"AB#D##C##". A /    \ B      C \ ...

  5. 叶子结点和分支节点_结点数和叶子结点数有什么区别

    展开全部 结点数和叶子结点数的区别: 叶子结点是度为0的结点,简单的说就是一个二叉树任意一个分支上62616964757a686964616fe58685e5aeb931333365653931的终端 ...

  6. 输出二叉树中从每个叶子结点到根结点的路径,统计二叉树的度为1的结点个数,二叉树算表达式(C语言)

    1.建立如下图表达式二叉树,并求值. (只涉及加减乘除运算) +*3##4##/8##4## (先序建立表达式) 2.统计二叉树的度为1的结点个数: 3.输出二叉树中从每个叶子结点到根结点的路径. # ...

  7. java 树最大距离_寻找二叉树最远的叶子结点(实例讲解)

    面试的时候碰到一个题:如何找到一个二叉树最远的叶子结点,以及这个叶子结点到根节点的距离? 第一反应肯定是递归 如何能找到最远的叶子结点,同时也能记下这个叶子节点到根节点的距离呢?采用一个List保持从 ...

  8. Java实现判断叶子节点_寻找二叉树最远的叶子结点(实例讲解)

    二叉树最远的叶子实例分享 面试的时候碰到一个题:如何找到一个二叉树最远的叶子结点,以及这个叶子结点到根节点的距离? 第一反应肯定是递归 如何能找到最远的叶子结点,同时也能记下这个叶子节点到根节点的距离 ...

  9. 统计二叉树中叶子结点数数据结构C语言,统计二叉树中叶子结点个数的问题,

    #include #include typedef struct Node { int data; struct Node *LChild; struct Node *RChild; }BiTNode ...

最新文章

  1. 干货丨大牛带你走向机器学习“正道”:小朋友才迷信算法,大人们更重视工程实践
  2. python的软件叫什么-django中的app是指什么
  3. 【OpenCV入门指南】第五篇轮廓检测 下
  4. Servlet 请求处理
  5. Maven下载Sql Server 2008的驱动包
  6. NodeJS知识汇总
  7. 浅析python类继承(一)
  8. 微软同步框架入门之五--使用WCF同步远程数据
  9. SQL Server多实例环境搭建与连接
  10. adb server version not match client
  11. SSM项目实战之十一:用户信息的添加
  12. word2013不能执行撤销操作,ctrl+Z键也无效的解决方法
  13. 何谓短缺和过剩_关于资源短缺,应用程序服务器和微服务
  14. make menuconfig错误——make[2]: *** [scripts/kconfig/lexer.lex.c] 错误 127
  15. 用python画漂亮的图案-使用 Python Turtle 设计简单而又美丽的图形
  16. mysql查询日期_mysql 查询当前日期
  17. java 火车票_Java 面向对象 之 接口 火车票实例
  18. mysql 2038年问题_64位Ubuntu系统的时间戳,2038年问题
  19. 逐梦offer -- JVM篇
  20. CV领域Transformer之Self-Attention浅薄理解

热门文章

  1. html5 video 隐藏全屏按钮,如何隐藏HTML5视频标签的全屏按钮?
  2. python: 企业微信 机器人定制化推送
  3. Adobe Reader 文档无法签名_Linux下的6款最好用的PDF文档阅览工具
  4. 风语者---走出软件作坊:三五个人十来条枪 如何成为开发正规军(二十九)
  5. html图片怎么装修到店铺,PS店铺装修和HTML基本操作
  6. 耳机不分主从是什么意思_“小雪不分股,大雪不出土”指什么意思?立冬过后还能种小麦吗?...
  7. tabelu 凹凸图
  8. AT3576 E Popping Balls——计数思路
  9. JAVA当中的Document
  10. 用C#识别图像中的文字_MODI OCR