二叉树性质及证明「建议收藏」

二叉树性质及证明「建议收藏」二叉树性质及证明(1)规定根节点层次为0,则一棵非空二叉树的第i层上最多有2i个结点。(2)规定根节点层次为0,则深度为k的二叉树的最大结点数为2(k+1)-1。(3)具有n个结点的完全二叉树的深度k为不超过lb(n+1)-1的最大整数。(4)对于一棵非空二叉树,如果叶节点个数为n0,度为2的结点数为n2,则有n0=n2+1。(5)对于具有n个结点的完…

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

二叉树性质及证明

  • (1)规定根节点层次为0,则一棵非空二叉树的第i层上最多有2i个结点。
  • (2)规定根节点层次为0,则深度为k的二叉树的最大结点数为2(k+1)-1。
  • (3)具有n个结点的完全二叉树的深度k为不超过lb(n+1)-1的最大整数。
  • (4)对于一棵非空二叉树,如果叶节点个数为n0,度为2的结点数为n2,则有n0=n2+1。
  • (5)对于具有n个结点的完全二叉树,按上下左右顺序对结点从0编号,则对于序号为i的结点有:
+ 如果i>0,则i的双亲序号为(i-1)/2 (/为整除)

+ 如果2*i+1<n,则序号为i结点的左孩子为2*i+1,若大于n,则无左孩子

+ 如果2*i+2<n,则序号为i结点的右孩子为2*i+2,若大于n,则无右孩子

证明:

  • (1)根据二叉树的特点,每个结点可分至多两个叉,规律可寻,即得2i。

  • (2)深度为k的二叉树所有最大结点个数,即满二叉树时,根据(1)每层结点相加,得2(k+1)-1。

  • (3)根据(2),n个结点必然大于深度为其上一层结点数,小于等于同等深度满二叉结点数,即
    2k-1<n<=2k+1-1 移项,两边取2的对数,得 k<lb(n+1)<=k+1

  • (4)二叉树只有0,1,2度结点所以n=n0+n1+n2

    二叉树的进入分支数,即有双亲的结点数除去根节点 M=n-1

    二叉树的发出结点数,1度发出1个,2度发出2。 可有M=n1+2*n2

    综上可移项得n0=n2+1

  • (5)对于性质5,可举例图示,按序号代替具体数值

              0
    
        1           2
    
      3    4     5     6 
    
    7    8
    

   1号在其层上索引为0,2号在其层索引为1。 同理3号在其层索引为0,5号其层索引为2 。因为二叉树分二叉的特点 可知按照各自本层索引有关系 y=2*x x为双亲层索引 y为孩子层索引。

   那么只需求得各自层内索引即可,因为按顺序编号,所以各自层索引就是 结点的二叉树索引减去除去本层的结点总数即

  2*(i-(2k-1)=j-(2k-1) 移项 i为双亲结点号,j为左孩子结点号 ,

  得左孩子结点索引j=2*i+1 。

  同理 右孩子j=2*i+2 ,双亲 (i-1)/2

  
  PS:根据性质5 我们就可以用一维数组存储二叉树了,可以索引并修改。 对于性质的应用,举例:哈夫曼编码,总结点数为2*n0-1,有兴趣自行推导

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

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/138186.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • js 给某个div增加class 样式(三种方式)

    js 给某个div增加class 样式(三种方式)

    2021年11月3日
    57
  • Python控制手机_能控制玩手机的软件

    Python控制手机_能控制玩手机的软件1.配置Python环境变量Python环境变量安装较为简单,比较常用的方式是直接百度Anaconda并且下载安装,安装过程中可直接选择自动配置环境变量,在此不再赘述。2.安装Python编辑器,并在其中配置Python编辑器常用的是PyCharm,属于和IDEA一家公司的软件,这个软件对于学生有免费优惠,大学生可以直接去它官网申请,好像是需要一年一申,当然不缺钱的话也可以直接购买。3.安装控制包uiautomator2,和其它辅助包安装完后,想要控制手机,还需要安装…

    2022年8月12日
    6
  • 笔记本运行游戏卡顿的调整方法_电脑玩游戏间歇性卡顿

    笔记本运行游戏卡顿的调整方法_电脑玩游戏间歇性卡顿笔记本电脑玩游戏为什么卡顿?笔记本电脑玩游戏卡顿是指在正常情况下笔记本电脑明明可以流畅的运行该游戏,却在游戏时出现了游戏帧数突然降低,过一段时间又恢复正常的毛病。这就让我们很尴尬了,玩游戏进入高潮的时候卡顿是有分分钟想砸电脑的节奏啊。那么该如何解决笔记本玩游戏卡顿的问题呢?下面小编就详细的为大家为大家介绍解决笔记本电脑游戏卡顿的方法。无论台式机还是笔记本玩游戏都存在相同的问题

    2025年9月2日
    6
  • 四位数除以两位数的除法算式_4整除2

    四位数除以两位数的除法算式_4整除2原题链接这里所谓的“光棍”,并不是指单身汪啦~ 说的是全部由1组成的数字,比如1、11、111、1111等。传说任何一个光棍都能被一个不以5结尾的奇数整除。比如,111111就可以被13整除。 现在,你的程序要读入一个整数x,这个整数一定是奇数并且不以5结尾。然后,经过计算,输出两个数字:第一个数字s,表示x乘以s是一个光棍,第二个数字n是这个光棍的位数。这样的解当然不是唯一的,题目要求你输出最小的解。提示:一个显然的办法是逐渐增加光棍的位数,直到可以整除x为止。但难点在于,s可能是个非常大的数 ——

    2022年8月8日
    12
  • form表单提交的几种方式

    表单提交方式一:直接利用form表单提交html页面代码:<!DOCTYPEhtml><html><head><metacharset=”UTF-8″/><title>Inserttitlehere</title></head><body><formaction=”h…

    2022年4月1日
    56
  • navigator对象_navigator.geolocation

    navigator对象_navigator.geolocationNavigator对象包含有关浏览器的信息,是BOM对象。一、Navigator对象属性属性 说明 appCodeName 返回浏览器的代码名 appName 返回浏览器的名称 appVersion 返回浏览器的平台和版本信息 cookieEnabled 返回指明浏览器中是否启用cookie的布尔值 platform 返回运行…

    2025年10月28日
    1

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

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