【数据结构】树与二叉树(三):二叉树的定义、特点、性质及相关证明

5.1 树的基本概念

5.1.1 树的定义

  • 一棵树是结点的有限集合T:
    • 若T非空,则:
      • 有一个特别标出的结点,称作该树的,记为root(T);
      • 其余结点分成若干个不相交的非空集合T1, T2, …, Tm (m>0),其中T1, T2, …, Tm又都是树,称作root(T)的子树
    • T 空时为空树,记作root(T)=NULL。

5.1.2 森林的定义

  一个森林是0棵或多棵不相交(非空)树的集合,通常是一个有序的集合。换句话说,森林由多个树组成,这些树之间没有交集,且可以按照一定的次序排列。在森林中,每棵树都是独立的,具有根节点和子树,树与树之间没有直接的连接关系。
  森林是树的扩展概念,它是由多个树组成的集合。在计算机科学中,森林也被广泛应用于数据结构和算法设计中,特别是在图论和网络分析等领域。
在这里插入图片描述

5.1.3 树的术语

  • 父亲(parent)、儿子(child)、兄弟(sibling)、后裔(descendant)、祖先(ancestor)
  • 度(degree)、叶子节点(leaf node)、分支节点(internal node)
  • 结点的层数
  • 路径、路径长度、结点的深度、树的深度

参照前文:【数据结构】树与二叉树(一):树(森林)的基本概念:父亲、儿子、兄弟、后裔、祖先、度、叶子结点、分支结点、结点的层数、路径、路径长度、结点的深度、树的深度

5.1.4 树的表示

  • 【数据结构】树与二叉树(二):树的表示C语言:树形表示法、嵌套集合表示法、嵌套括号表示法 、凹入表示法

5.2 二叉树

5.2.1 二叉树

1. 定义

  二叉树是一种常见的树状数据结构,它由结点的有限集合组成。一个二叉树要么是空集,被称为空二叉树,要么由一个根结点和两棵不相交的子树组成,分别称为左子树右子树。每个结点最多有两个子结点,分别称为左子结点和右子结点。
在这里插入图片描述

2. 特点

  二叉树的特点是每个结点最多有两个子结点,并且子结点的位置是有序的,即左子结点在前,右子结点在后。这种有序性使得二叉树在搜索、排序等算法中有广泛的应用。

  • 在二叉树中,根结点是整个树的起始点,通过根结点可以访问到整个树的其他结点。每个结点都可以看作是一个独立的二叉树,它的左子树和右子树也是二叉树。

  • 二叉树可以是空树,也可以是只有根结点的树,或者是由多个结点组成的树。每个结点可以包含一个数据元素,以及指向左子结点和右子结点的指针。

  • 二叉树的形状可以各不相同,它可以是平衡的或者不平衡的,具体取决于结点的分布情况。在二叉树中,每个结点的左子树和右子树都是二叉树,因此可以通过递归的方式来处理二叉树的操作。

3. 性质

  • 引理5.1:二叉树中层数为i的结点至多有 2 i 2^i 2i个,其中 i ≥ 0 i \geq 0 i0

    • 这个引理表明,二叉树的每一层上的结点数量是指数级增长的。
  • 引理5.2:高度为k的二叉树中至多有 2 k + 1 − 1 2^{k+1}-1 2k+11个结点,其中 k ≥ 0 k \geq 0 k0

    • 这个引理说明了二叉树的高度与结点数量之间的关系,高度越大,结点数量也越多。
  • 引理5.3:设T是由n个结点构成的二叉树,其中叶结点个数为 n 0 n_0 n0,度数为2的结点个数为 n 2 n_2 n2,则有 n 0 = n 2 + 1 n_0 = n_2 + 1 n0=n2+1

    • 这个引理描述了二叉树中叶结点和度数为2的结点之间的关系,即叶结点的数量比度数为2的结点数量多1。
引理5.1:二叉树中层数为i的结点至多有 2 i 2^i 2i个,其中 i ≥ 0 i \geq 0 i0

在这里插入图片描述

  证明:使用数学归纳法。

基础步骤: i = 0 i=0 i=0 时,仅有一个根结点,其层数为0。因此,第0层上至多有 2 0 = 1 2^0=1 20=1 个结点。因此,当 i = 0 i=0 i=0 时,引理成立。

归纳假设: 假设当 i = j i=j i=j ( j ≥ 0 ) (j\geq0) (j0) 时,二叉树中第 j j j 层上至多有 2 j 2^j 2j 个结点。

归纳步骤: 考虑第 j + 1 j+1 j+1 层上的结点个数。对于任意一个结点,其子结点个数最多为2。根据归纳假设,第 j j j 层上至多有 2 j 2^j 2j 个结点。因此,第 j + 1 j+1 j+1 层上的结点个数最多为 2 × 2 j = 2 j + 1 2\times2^j=2^{j+1} 2×2j=2j+1 个结点。

  因此,根据数学归纳法,对于任意非负整数 i i i,二叉树中层数为 i i i 的结点至多有 2 i 2^i 2i 个。

证毕

引理5.2:高度为k的二叉树中至多有 2 k + 1 − 1 2^{k+1}-1 2k+11个结点,其中 k ≥ 0 k \geq 0 k0

  对于高度为k的二叉树,我们可以计算每一层的最大结点数,并将它们相加来得到总结点数的上界。根据引理5.1,第 i i i层上至多有 2 i 2^i 2i个结点。那么,第 0 0 0层至第 k k k层的结点数上界可以表示为:
2 0 + 2 1 + 2 2 + . . . + 2 k 2^0 + 2^1 + 2^2 + ... + 2^k 20+21+22+...+2k

  这是一个等比数列的和,可以使用等比数列求和公式进行计算。等比数列的求和公式为:

S = a ∗ ( r n − 1 ) / ( r − 1 ) S = a * (r^n - 1) / (r - 1) S=a(rn1)/(r1)

其中,S表示数列的和,a是首项,r是公比,n是项数。

  在我们的情况下,首项a=1,公比r=2,项数n=k+1。将这些值代入公式中,我们可以得到:

2 0 + 2 1 + 2 2 + . . . + 2 k = 1 ∗ ( 2 k + 1 − 1 ) / ( 2 − 1 ) = 2 k + 1 − 1 2^0 + 2^1 + 2^2 + ... + 2^k =1 * (2^{k+1} - 1) / (2 - 1) = 2^{k+1} - 1 20+21+22+...+2k=1(2k+11)/(21)=2k+11

因此,高度为k的二叉树中至多有2^(k+1) - 1个结点。

证毕

  • 问题1:高度为k (k≥1)的二叉树中至少有多少个结点?k+1
  • 问题2:含有k (k≥1)个结点的二叉树高度至多为多少? k-1
引理5.3:设T是由n个结点构成的二叉树,其中叶结点个数为 n 0 n_0 n0,度数为2的结点个数为 n 2 n_2 n2,则有 n 0 = n 2 + 1 n_0 = n_2 + 1 n0=n2+1

  设T是由 n n n个结点构成的二叉树,其中叶结点个数为 n 0 n_{0} n0,次数为2的结点个数为 n 2 n_{2} n2

  根据引理5.3的前提条件,我们有以下等式:

n = n 0 + n 1 + n 2 ( 5 − 1 ) n = n_{0} + n_{1} + n_{2}       (5-1) n=n0+n1+n2      (51)

其中, n 1 n_{1} n1是T中次数为1的结点个数。

  另一方面,设二叉树T的边的个数为 E E E。除了根结点外,每个结点和其父结点之间都有且仅有一条边,即一个结点对应一条边。因此,结点的个数 n n n比边的个数 E E E多1(根结点不对应边),即:

n = E + 1 ( 5 − 2 ) n = E + 1          (5-2) n=E+1         (52)

  另外,从另一个角度来看,次数为1的结点对应一条边,次数为2的结点对应两条边。因此,边的个数 E E E可以表示为:

E = n 1 + 2 n 2 ( 5 − 3 ) E = n_{1} + 2n_{2}        (5-3) E=n1+2n2        (53)

  我们将(5-1)、(5-2)和(5-3)联立起来,通过求解这个方程组,我们可以得到 n 0 = n 2 + 1 n_{0} = n_{2} + 1 n0=n2+1,即二叉树T中的叶结点个数 n 0 n_{0} n0为次数为2的结点个数 n 2 n_{2} n2加1。

证毕

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/132952.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

骨骼动画详解

【物体怎么样是在动】 当物体的位置、朝向、大小即Transform有任意一者发生变化时,物体在动。 但变化要达到一定的幅度时,我们会看到物体在动,幅度是多少却决于我们看这个物体的距离、方向,物体的朝向等因素。 这里说的幅度是指…

mysql 存储引擎

存储引擎 在MySQL中,数据用各种不同的技术存储在文件中,每一种技术都使用的是不同的存储机制、索引技巧、锁定水平以及最终提供的不同的功能和能力,这些就是我们说的存储引擎 功能 1、MySQL将数据存储在文件系统中的一种方式和格式 2、存储…

【LVS实战】03 LVS负载均衡-DR模式实验

本文介绍,如何通过ipvsadm配置负载均衡,并且转发模式为DR直接路由模式 一、网络拓扑 如下图: LVS负载均衡的机器,配置了一个VIP:10.1.0.7 二、前置准备 每台机器关闭防火墙 systemctl stop firewalldRS装好ngin…

如何用 GPT-4 全模式(All Tools)帮你高效学习和工作?

「十项全能」的 ChatGPT ,用起来感受如何? 之前,作为 ChatGPT Plus 用户,如果你集齐下面这五个模式,就会成为别人羡慕的对象。 但现在,人们更加期盼的,是下面这个提示的出现: 这个提…

ZZ038 物联网应用与服务赛题第I套

2023年全国职业院校技能大赛 中职组 物联网应用与服务 任 务 书 (I卷) 赛位号:______________ 竞赛须知 一、注意事项 1.检查硬件设备、电脑设备是否正常。检查竞赛所需的各项设备、软件和竞赛材料等; 2.竞赛任务中所使用的各类软件工…

http中的Content-Type类型

浏览器的Content-Type 最近在做web端下载的时候需要给前端返回一个二进制的流,需要在请求头中设置一个 writer.Header().Set("Content-Type", "application/octet-stream")那么http中的Content-Type有具体有哪些呢?他们具体的使用场…

超详细的wheel轮子下载和.whl安装

wheel安装 pip安装失败问题 基于Anaconda进行 pip install ,报如下 但基于此路径下安装.whl文件时候,会报如下 通过在可借鉴的博客上查找相关原因,发现原来是因为版本没有匹配的问题,基于此问题以及博客中的解决方案,进行亲测…

Pandas练手项目

一、chipotle tsv 数据集:chipotle.tsv-数据集 代码:https://download.csdn.net/download/Albert233333/88508819 1 导入数据 # order_id这一列相同的数字表示 一个消费者同一次进行的交易 # 表格中的每一行表示 用户一次购买的某一个品类 购买的数量…

1、Sentinel基本应用限流规则(1)

Sentinel基本应用&限流规则 1.1 概述与作用 随着微服务的流行,服务和服务之间的稳定性变得越来越重要。缓存、降级和限流是保护微服务系统运行稳定性的三大利器。 缓存:提升系统访问速度和增大系统能处理的容量 降级:当服务出问题或者影…

12 款小众宝藏AI工具,90% 的开发者不了解

AI工具的发展一日千里,了解这些AI工具的功能以及它们如何提高开发过程中的效率和创新,变得尤为重要,这里分享了 12个宝藏的人工智能和低代码工具,希望对大家的工作与学习有所帮助。 1.Pieces for Developers 网址:ht…

Technology Strategy Pattern 学习笔记5 -Creating the Strategy-Department Context

Creating the Strategy-Department Context 1 situations This pattern helps you organize your thoughts, and consider the department holistically in the following situations 1.1 •Aligning teams around a vision, especially a new direction 1.2 •Setting up a …

presto插件机制揭秘:探索无限可能的数据处理舞台

文章目录 1. 前言2. Presto插件架构3. Plugin接口3.1 插件协议3.2 插件实现类 4. 插件加载过程4.1 PluginManager 5. 插件应用6. 总结 关键词:Presto Plugin 1. 前言 本文源码环境: presto: prestoDb 0.275版本 在Presto框架中插件机制设计是一种非常常见…

lombok依赖介绍(帮助我们消除冗长代码,如get,set方法)

前言 lombok 是一个 Java 工具库,通过注解的方式,简化 Java 开发。要想使用 lombok 中的注解,我们需要先引入依赖,推荐看idea必装插件EditStarters(快速引入依赖),lombok是⼀款在编译期⽣成代码…

随身wifi编译Openwrt的ImmortalWrt分支

背景: 之前用酷安上下载的苏苏亮亮版友提供的Openwrt,在高通410棒子上刷机成功,但编译一直就没搞定。近期听说又出了个分支版本ImmortalWrt,刷了个版本,感觉界面清爽不少,内核也升级,遂打算搞定…

【Redis】SSM整合Redis注解式缓存的使用

🎉🎉欢迎来到我的CSDN主页!🎉🎉 🏅我是Java方文山,一个在CSDN分享笔记的博主。📚📚 🌟推荐给大家我的专栏《Redis》。🎯🎯 &#x1f4…

【ML】分类问题

分类问题 classification:根据已知样本特征,判断输入样本属于哪种已知样本类。 常用入门案例:垃圾邮件检测、图像分类、手写数字识别、考试通过预测。 分类问题和回归问题的明显区别: 分类问题的结果是非连续型标签&#xff0c…

Netty入门指南之传统通信的问题

作者简介:☕️大家好,我是Aomsir,一个爱折腾的开发者! 个人主页:Aomsir_Spring5应用专栏,Netty应用专栏,RPC应用专栏-CSDN博客 当前专栏:Netty应用专栏_Aomsir的博客-CSDN博客 文章目录 参考文献前言多线程…

基于APM(PIX)飞控和missionplanner制作遥控无人车-从零搭建自主pix无人车无人坦克

前面的步骤和无人机调试一样,可以参考无人机相关专栏。这里不再赘述。 1.安装完rover的固件后,链接gps并进行校准。旋转小车不同方向,完成校准,弹出成功窗口。 2.校准遥控器。 一定要确保遥控器模式准确,尤其是使用没…

轻量封装WebGPU渲染系统示例<20>- 美化一下元胞自动机(源码)

当前示例源码github地址: https://github.com/vilyLei/voxwebgpu/blob/feature/rendering/src/voxgpu/sample/GameOfLifePretty.ts 系统特性: 1. 用户态与系统态隔离。 2. 高频调用与低频调用隔离。 3. 面向用户的易用性封装。 4. 渲染数据(内外部相关资源)和渲染机制分离…

使用Anaconda安装TensorFlow环境以及没有搜到的报错的解决方法

1.在官网下载Anaconda 这一步几乎不会有人报错 下稳定的版本 或者最新的版本都可以 2.TensorFlow分两个版本 一个是用cpu跑 另一个是用gpu跑 显而易见 cpu的计算性能已经比不上现在主流的显卡了 所以有独显的电脑尽量安装gpu版本 CPU版本: 先给出cpu版本的安装方法: 打开A…