1、已知完全二叉树具有967个结点,则其叶子结点个数为:

详解:

首先明确一点该二叉树是一棵二叉树,那可以使用二叉树的一些性质。

从第一层开始计算每层的节点个数:1,2,4,8,16,32,64,128,256,512,1024...

将前9层的结点数量全部加起来有511个,如果加上第十层1024,则超过967,所以该完全二叉树肯定是有十层的,所以叶子结点分布在第9层和第10层,且第10层全部都是叶子结点。

设第9层的叶子个数为b,第9层的分支结点个数为a;

由于是完全二叉树,又该树有10层,所以第9层肯定有2^(9-1) = 256个结点,则有关系式:

a + b = 256    ---------------(1)

又第9层的分支结点个数为a,那么第10层的叶子个数为2*a, 或者2*a-1 个,对于这两种情况,可以根据总的结点个数来确定,因为967是一个奇数,又第1层根节点只有一个,总的结点个数减去1,则为966,是一个偶数,所以第10层的叶子个数肯定为2*a个。

已知前9层共有1+2+4+8+16+32+64+128+256 = 511个结点,第10层有2*a个结点,所以结点总数为前9层的总数加上第10层的个数,则有关系式:

2*a + 511 = 967  ---------------(2)

结合关系式(1)(2),可解得a = 228, b = 28,

叶子结点总数为第9层的叶子数加上第10层的叶子数:b + 2*a = 28 + 2 * 228 = 484。

2、在一棵度为4的树T中,如有20个度为4的结点,10个度为3的结点,1个度为2的结点,10个度为1的结点,则树T中的叶子结点个数为:

解:设结点总数为n,叶子结点个数为m。

则结点总数: n = 20 + 10 + 1 + 10 + m        ---------------(1)

还有一个关系式是关于结点总数和总度数的。

假如将“度”理解为一根绳子,对于每一棵树,我们都很清楚,每一个结点都是由一个度牵引着的,除了根节点这个特殊结点没有被度牵引。所以,总结点数是总的度数加上根节点的数目,而根节点只有一个,所以总结点数 = 总的度数 + 1,由此,可以得到下面的结点总数和度总数的关系式:

n = 20*4 + 10*3 + 1*2 + 10*1 + m*0  + 1      ---------------(2)

联合关系式(1)(2),可解得m = 82。

3、一棵度为3的树中,有3度结点100个,有2度结点200个,则叶子结点个数为:

解:虽然这棵树不是二叉树,但是有些性质也是适用的。其中,最重要的一个性质是结点总数和总度数的关系。

设1度结点共有a个,叶子结点共有b个,总的结点个数为n,则有以下关系式:

n = 100 + 200 + a + b

n = 3 * 100 + 2 * 200 + 1 * a + 0 * b + 1

联合以上两个关系式可以解得 b = 401,即叶子个数为401个。

总结:

大部分关于二叉树的计算问题,只要仅仅抓住二叉树和树的性质,基本上都能很快解决。

所以对于二叉树的性质要非常熟悉,不仅仅要知道性质的内容,也要知道性质的推倒过程。

树与二叉树——二叉树中计算叶子结点个数问题相关推荐

  1. 计算二叉树的第k层中所有叶子结点个数

    计算二叉树的第k层中所有叶子结点个数 Time Limit:1000MS Memory Limit:65535K 题型: 编程题 语言: 无限制 描述 二叉链表表示的二叉树:按先序次序输入二叉树中结点 ...

  2. 【数据结构】——二叉树的创建、计算叶子结点个数、递归遍历

    前面我们讲了关于数据结构中的堆栈问题,这篇文章主要是为大家简要介绍一下二叉树,并实现二叉树的创建.计算叶子结点个数.递归遍历.判断是否是完全二叉树等相关问题~ 一.二叉树的介绍 1.什么是二叉树 一棵 ...

  3. 树:求二叉树的高度和叶子结点数量

    算法代码很简单都是用使用递归计算,大家把递归思想领悟到就ok了. 二叉树高度算法 //求二叉树的高度 采用递归的方式 void GetHeight(BiTree tree, int* heightNu ...

  4. 统计孩子兄弟表示法森林中叶子结点个数

    算法思路 孩子兄弟表示法,即二叉树中,结点A的左指针代表A的孩子结点,A的右指针代表A的兄弟结点,当A为根结点时,则A的右指针表示另一棵树中的根结点,此时二叉树表示为森林.叶子结点的定义为:度为0的结 ...

  5. 入门二叉树,三种遍历,计算结点个数 ,深度 叶子结点个数,第k层结点个数

    1.关于二叉树的前中后序快速排序 那就在这里拿这张图来演示一下怎样快速写出中序遍历,我们都知道中序遍历是,左子树,根,右子树 B A C D E F H 最后直接得出结果DBEHACF 2.二叉树的五 ...

  6. 计算二叉树的深度和叶子结点数(递归算法实现)

    [问题描述] 计算二叉树的深度和叶子结点数 [输入形式] 输入二叉树的先序遍历序列建立二叉树. [输出形式] 输出二叉树的叶子结点数和深度. [样例输入] A B C # # # # [样例输出] L ...

  7. 二叉树的进阶操作---(求二叉树中所有结点个数,求叶子结点个数,求第k层结点个数;在二叉树中查找某一结点;层序遍历;判断是否为完全二叉树)

    typedef struct TreeNode {struct TreeNode *left;struct TreeNode *right;char val; }TreeNode;typedef st ...

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

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

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

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

最新文章

  1. android:layout_with=,android – 难以理解layout_alignWithParentIfMissing
  2. linux alpine 用dockerfile创建的ssh镜像
  3. JDK13 GA发布:5大特性解读
  4. PTA第二个编程题总结
  5. [机械]“重工业面临两大危机”——向文波(三一重工股份有限公司执行总裁)
  6. 猎豹浏览器插件无法加载怎么办 插件无法加载解决方法
  7. Luogu P1197 [JSOI2008]星球大战
  8. [学习笔记]--ASP.Net MVC
  9. Centos 6.5安装python3.5.1
  10. Linux下定时切割nginx日志并删除指定天数前的日志记录
  11. JDK与API下载与使用
  12. RDP报表工具数据字典配置及使用说明
  13. Linux线程-概念和控制
  14. 巴塞尔iii_巴塞尔协议——银行风控实施的超级系统工程 之二
  15. Roaring64NavigableMap(Bitmap)简单使用
  16. 可口可乐市场调查失败的原因_经典案例可口可乐一次市场调研失败的教训
  17. LeetCode——Symmetric Tree
  18. android标签云:LabelView
  19. 教你制作手机电子书android应用
  20. 图像超分中的深度学习网络

热门文章

  1. layui 表格实现可编辑日历
  2. blackberry j2me 发送SMS短信
  3. Android-仿微信图片选择器
  4. [开源]斗图大脸萌7.0版 斗图素材引流
  5. oppo手机怎么打开USB调试模式
  6. 安装mpg123音乐播放器
  7. 无迹卡尔曼滤波UKF和容积卡尔曼滤波CKF进行锂电池SOC估计的C语言版本实现,和matlab版本一样包含定参和FFRLS两种情况
  8. 30天自制操作系统——第一天制作一个Hello word操作系统
  9. 菜鸟潇寒学习库----动态库
  10. 超滤-反渗透膜工艺处理黄磷生产废水 避免水体污染