树的叶子结点与完全二叉树结点计算方法[通俗易懂]

树的叶子结点与完全二叉树结点计算方法[通俗易懂]一:完全二叉树中结点问题分析:设叶子节点个数为n0,度为1的节点个数为n1,度为2的节点个数为n2侧有n0+n1+n2=n(1)对于二叉树有:n0=n2+1(2)由(1)(…

大家好,又见面了,我是你们的朋友全栈君。

一:完全二叉树中结点问题

分析:

       设叶子节点个数为n0,度为1的节点个数为n1,度为2的节点个数为n2

       侧有 

                n0+n1+n2=n                (1)

       对于二叉树有:

                n0=n2+1                       (2)

       由(1)(2) ==>

                n0=(n+1-n1)/2              (3)

       由完全二叉树的性质可知:n1=0 或 1

总结:

        (a):当n1=0时(即度为1的节点为0个时,此时n为奇数)或者n为奇数时

              n0= (n+1)/2;

        (b):当n1=1时(即度为1的节点为1个时,此时n为偶数)或者n为偶数

             n0= n/2;

      综合(a)(b)可得:

        (结论):一个具有n个节点的完全二叉树,其叶子节点的个数n0为: n/2 向上取整,或者(n+1)/2 向下取整
 

首先定义二叉树的度为子节点的个数,因此根据这个概念,节点情况只有0,1,2三种情况,分别用n0,n1,n2表示。 
一个棵树的节点总数=n0+n1+n2 
如图: 
 

树的叶子结点与完全二叉树结点计算方法[通俗易懂]

当节点数N为奇数时,说明该树结构中没有度为1的节点。 
当节点数为偶数时,说明有一个度为1的节点,如上图情况。 
对于一个非空二叉树,有以下等式成立 
n0=n2+1

举例说明: 
设一棵完全二叉树共有699个节点,则在该二叉树中的叶节点数是什么? 
n=n0+n1+n2 
n0=n2+1 
n=699,奇数,说明n1为0; 
n=n0+n0-1 
n0=350,所以叶节点数为350。

下面看另一个题目:

一颗完全二叉树第六层有8个叶结点(根为第一层),则结点个数最多有()个。

二叉树第k层最多有 2^(k-1) 个节点
第六层最多有32个节点
第五层最多有16个节点
第四层最多有8个节点
第三层最多有4个节点
第二层最多有2个节点 
第一层最多有1个节点

完全二叉树的叶节点只可能出现在后两层

如果完全二叉树有6层,则前5层是满二叉树,总节点数目为16+8+4+2+1+8=39

如果完全二叉树有7层,则前6层是满二叉树,
前六层总节点数目为32+16+8+4+2+1=63
第六层有8个叶子节点,则有32-8=24个非叶子节点
第七层最多有24*2个叶子节点
总节点数目为63+24*2=111

 

二:树的叶子结点计算方法

在学习树的时候经常会遇到计算树中叶子结点的个数的题,比如现在有这样一道题

已知在一棵度为4的树T中,若有20个度为4的结点,10个度为3的结点,1个度为2的结点,10个度为1的结点,则树T的叶子结点的个数为?
解决这道题的思路是列出一个关于各个度的结点的等式,从而根据已知条件算出度为0的结点的个数,下面具体说一下解题方法:

设树T中的结点个数为n,度为0的结点的个数为n0,度为1的结点的个数为n1,度为2的结点的个数为n2,度为3的结点的个数为n3,度为4的结点的个数为n4,则有:

n = n0 + n1 + n2 + n3 + n4

设树T中的总边数为e,因为除了根节点的入度为0,其余各节点的入度都为1,则有:

e = n – 1 = n0 + n1 + n2 + n3 + n4 – 1

又因为,n0的出度为0,n1的出度为1,n2的出度为2,n3的出度为3,n4的出度为4,所以:

e = n0 * 0 + n1 * 1+ n2 * 2 + n3 * 3 + n4 * 4

综上所述:

e = n0 * 0 + n1 * 1+ n2 * 2 + n3 * 3 + n4 * 4 = n0 + n1 + n2 + n3 + n4 – 1

n0 = n2 + n3 * 2 + n4 * 3 + 1

根据题意,n2 = 1, n3 = 10 ,n4 = 20 ,代入得:

n0 = 82

因此该树T有82个叶子结点

看完了上面的解题过程,思路应该很清晰明了吧,没懂?没关系,我们再来看一道题

一棵度为3的树中,有3度的结点100个,有2度的结点200个,有叶子结点多少个?
还是和上面一样的解题过程,我稍微简略一点写,思路都是一样的

n = n0 + n1 + n2 + n3

e = n – 1 = n0 + n1 + n2 + n3 – 1

e = n0 * 0 + n1 * 1 + n2 * 2 + n3 * 3

n0 + n1 + n2 + n3 – 1 = n0 * 0 + n1 * 1 + n2 * 2 + n3 * 3

n0 = n2 + n3 * 2 + 1

则叶子结点的个数为401个
 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/138421.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • 实验设备管理系统C语言_实验室设备管理系统代码

    实验设备管理系统C语言_实验室设备管理系统代码这里写目录标题实验室设备管理系统题目要求源代码运行结果实验室设备管理系统题目要求实验设备管理系统设计实验设备信息包括:设备编号,设备种类(如:微机、打印机、扫描仪等等),设备名称,设备价格,设备购入日期,是否报废,报废日期等。主要功能:(1)能够完成对设备的录入和修改(2)对设备进行分类统计(3)设备的破损耗费和遗损处理(4)设备的查询要求:使用文件方式存储数据。源代码#define_CRT_SECURE_NO_WARNINGS#include<stdio.h>#i

    2022年10月13日
  • mapminmax 用法

    mapminmax 用法mapminmax是MATLAB实现归一化的工具包,默认:(1)将矩阵的每行分别进行归一化;(2)每行的最大值最小值作为每行归一化的xmin和xmax;(3)将数据归一化到[-1,1].若要将数据归一化到0到1之间,即y∈[0,1],使用b=mapminmax(a,0,1);若给与确定的最大值和最小值作为每行的xmin和xmax,使用:b= mapminmax(a,0,1);PS.xmin…

  • 地理加权回归简易总结

    地理加权回归简易总结地理加权回归空间统计有别于经典统计学的两大特征:空间相关性和空间异质性,莫兰指数等可以用来量化空间相关性,那么地理加权回归,就可以用来量化空间异质性。1.地理加权回归的出现:1)因为地理位置的变化,而引起的变量间关系或结构的变化称之为空间非平稳性(spatialnonstationarity)。——虾神在空间上出现的非平稳性,通常被认为由以下三个方面的原因引起的:随机抽样的误差引起…

  • 安装VMware Tools选项显示灰色的正确解决办法

    安装VMware Tools选项显示灰色的正确解决办法百度了一天,重新安装了vm,在csdn逛了又逛,结合无数篇大神文章,最后自己成功琢磨出了真正能点亮灰色按钮的方法。简单实在,大神们的方法实在千秋万变,一个比一个复杂,最后只能实现成功拖拽,而复制粘贴却还是不行。首先问题如下:解决办法如下:1.关闭虚拟机;2.在虚拟机设置分别设置CD/DVD、CD/DVD2和软盘为自动检测三个步骤;3.再重启虚拟机,灰色字即点…

  • 写java代码的软件_新手编写java代码使用什么软件

    写java代码的软件_新手编写java代码使用什么软件新手编写java代码常用的编辑器有:1、eclipseEclipse是一个开放源代码的、基于Java的可扩展开发平台。就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。幸运的是,Eclipse附带了一个标准的插件集,包括Java开发工具(JavaDevelopmentKit,JDK)。(视频教程推荐:java视频)2、notepad++Notepad++是在微软视窗环境…

  • RS232电平和TTL电平

    结论:TTL电平和RS232电平,无论是在电压范围还是在极性上(RS232是负逻辑)都有很大的不同。显然,这两种电平是不能直接相连的。为了把单片机的TTL电平转换成RS232电平,通常我们需要一个专用的转换芯片,比如SP3232。RS232是工业上常用的串口标准,无论是PLC的RS232串口模块,还是工控机的串口(COM),输出的电平都称为RS232电平。同时我们知道这些模块的内部控制单元都是…

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号