二叉树性质及习题

二叉树性质及习题二叉树性质:1.在二叉树的第k层至多有2^(k-1)个结点。(k>=1)2.深度为k的二叉树至多有2^(k-1)个结点(k>=1)。3.对任何一棵二叉树T,如果其叶结点数为n0,度为2的结点数为n2,则n0=n2+1。证明:若度为1的结点有n1个,总结点个数为n,总边数为e,则根据二叉树的定义,n=n0+n1+n2…

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

二叉树性质:
1.在二叉树的第 k层至多有 2^(k -1)个结点。(k>=1)
2.深度为 k 的二叉树至多有 2^(k-1)个结点(k >=1)。
3. 对任何一棵二叉树T, 如果其叶结点数为n0, 度为2的结点数为 n2,则n0=n2+1。
证明:
若度为1的结点有 n1个,总结点个数为n,总边数为 e,则根据二叉树的定义,

        n = n0 + n1 + n2    

        e = 2n2 + n1 = n - 1 (除了根节点,每个节点对应一条边 )

       因此,有  2n2+ n1 =n0 + n1 + n2- 1

                      n2= n0 - 1  =>   n0= n2+ 1

      空链域:2n0+ n1 = n0 + n2 +1+ n1 = n+1

4.具有 n (n>=0) 个结点的完全二叉树的深度为+1

   证明:设完全二叉树的深度为 h,则根据性质2 和完全二叉树的定义有

        2^(h-1)- 1 < n <= 2^h - 1或 2^(h-1)<= n < 2^h

           取对数 h-1 < log2n  <= h,又h是整数,

           因此有 h = +1 

5.如果对一棵有n个结点的完全二叉树的结点按层序编号(从第一层到最后一层,每层从左到右),对任一结点i(1<=i<=n)有:

如果i=1,则结点i是二叉树的根,无双亲;如果i>1,则其双亲是结点 ⌊ i/2 ⌋ 。
如果2i>n,则结点i无左孩子(结点i为叶子结点);否则其左孩子是结点2i 。
如果2i+1>n,则结点i无右孩子;否则其右孩子是结点2i+1 。

完全二叉树:
定义:
若设二叉树的深度为h,除第 h 层外,其它各层 (1~h-1) 的结点数都达到最大个数,第 h 层所有的结点都连续集中在最左边,这就是完全二叉树。(结点可为单个)
(1)所有的叶结点都出现在第k层或k-l层(层次最大的两层)
(2)对任一结点,如果其右子树的最大层次为L,则其左子树的最大层次为L或L+l。
在这里插入图片描述

性质:
如果一棵具有n个结点的深度为k的二叉树,它的每一个结点都与深度为k的满二叉树中编号为1~n的结点一一对应,这棵二叉树称为完全二叉树。

可以根据公式进行推导,假设n0是度为0的结点总数(即叶子结点数),n1是度为1的结点总数,n2是度为2的结点总数,则 :
①n= n0+n1+n2 (其中n为完全二叉树的结点总数);又因为一 个度为2的结点会有2个子结点,一个度为1的结点会有1个子结点,除根结点外其他结点都有父结点
②n= 1+n1+2n2 ;由①、②两式把n2消去得:n= 2n0+n1-1,**由于完全二叉树中度为1的结点数只有两种可能0或1,**由此得到n0=n/2 或 n0=(n+1)/2。

 **简便来算,就是 n0=n/2,其中n为奇数时(n1=0)向上取整;n为偶数时(n1=1)向下取整。可根据完全二叉树的结点总数计算出叶子结点数。**

完全二叉树通常采用数组存储

习题:
例:
设一棵完全二叉树共有699个结点,则在该二叉树中的叶子
多种方法:
1.根据 “二叉树的第 i层至多有 2^(i – 1) 个结点;深度为 k的二叉树至多有
2^k – 1 个结点(根结点的深度为 1)”这个性质:
因为 2^9-1 < 699 < 2^10-1 , 所以这个完全二叉树的深度是 10,前 9层是一个满二叉树,这样的话,前九层的结点就有 2^9-1=511 个;而第九层的结点数是 2^(9-1)=256
所以第十层的叶子结点数是 699-511=188 个;
现在来算第九层的叶子结点个数。
由于第十层的叶子结点是从第九层延伸的,所以应该去掉第九层中还有子树的结点。因为第十层有 188个,所以应该去掉第九层中的 188/2=94个;
所以,第九层的叶子结点个数是 256-94=162,加上第十层有 188个,最后结果是 350个。
2.根据 n0=n/2,其中n为奇数时(n1=0)向上取整;n为偶数时(n1=1)向下取整。可根据完全二叉树的结点总数计算出叶子结点数得到结果
其他题目:https://wenku.baidu.com/view/988bd3b5ab00b52acfc789eb172ded630b1c98e6.html?re=view

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

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

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


相关推荐

  • ToF相机学习笔记之基本知识

    ToF相机学习笔记之基本知识ToF相机属于一种非接触式光学传感器,通过计算发射激光的飞行时间获取对应像素的深度信息。就非接触式距离测量方法而言,其分类可用下表表示如下:1.1ToF传感器基础一个逐点式的ToF传感器采用了雷达原理估计场景点的径向距离。简单来说,就是通过计算光从发射到经场景点反射后的飞行时间。为了测量整个场景表面而不是几个场景点,很多距离测量系统集成了一个逐点式ToF传…

    2022年5月20日
    32
  • springboot到底是什么_Springboot启动流程

    springboot到底是什么_Springboot启动流程SpringBoot是干哈的介绍:springboot是由Pivotal团队提供的全新框架。spring的出现是为了解决企业级开发应用的复杂性,spring的通过注册bean的方式来管理类,但是随着业务的增加,使用xml配置bean的方式也显得相当繁琐,所以springboot就是为了解决spring配置繁琐的问题而诞生的,并且近几年来非常流行开启我的第一个HelloSpringBoot!开启方式根据https://start.spring.io网址创建一个springboot项目

    2022年8月21日
    5
  • angular父子组件传值

    angular父子组件传值angular父子组件传值父组件到子组件1.父组件传递数据2.子组件接受数据子组件到父组件1.父组件根据ViewChild获取子组件实例2.子组件通过广播的形式,向子组件发送数据子组件操作父组件接收父组件到子组件1.父组件传递数据在父组件中调用子组件,通过[‘属性值’]进行传值//父组件app-home,子组件app-header//父组件中引用子组件,传递title及msg到子组件<app-header[title]=”title”[msg]=”msg”[run]=”run”[h

    2022年5月13日
    50
  • td-scdma/wcdma是什么意思_CDMA频段

    td-scdma/wcdma是什么意思_CDMA频段1.概述比较项目:核心网部分的异同接入网部分的差别业务提供上的异同2.核心网比较TD-SCDMA技术被3GPPR4采纳,因此在R4的核心网部分,TD-SCDMA与WCDMA没有差异:ØTD-SCDMA在核心网方面所用到的接口和主要协议与WCDMA一致。Ø在3GPP核心网中所提供的业务并没有将TD-SCDMA同WCDMA进行区分。Ø

    2022年10月3日
    3
  • 60mph和kmh换算_mph换算器(速度计算器在线)「建议收藏」

    60mph和kmh换算_mph换算器(速度计算器在线)「建议收藏」mph是英里每时的意思吗?如何换算成千米每时?100mph=160.9kmhmph是英里每时的意思吗?如何换算成千米每时?mph是米/小时的意思mitersperhour也可写成m/hAkm/h=A*1000m/h玩极品飞车12,上面的速度是mph,怎么换算啊1英里=5280英尺=63360英寸=1609.344米汽车速度表上,英制的MPH与公制的km/…

    2022年6月28日
    84
  • navicat v15.0.23.0激活码【2021.8最新】「建议收藏」

    (navicat v15.0.23.0激活码)好多小伙伴总是说激活码老是失效,太麻烦,关注/收藏全栈君太难教程,2021永久激活的方法等着你。https://javaforall.net/100143.htmlIntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,上面是详细链接哦~Z9LZO4ZKWA-eyJsaWNlbnNlSWQiOi…

    2022年3月22日
    109

发表回复

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

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