【数据结构之二叉树】——二叉树的概念及结构,特殊的二叉树和二叉树性质

news2024/11/23 22:32:04

文章目录

  • 一、二叉树的概念及结构
    • 1.概念
    • 2.现实中的二叉树
    • 3. 特殊的二叉树:
    • 3.二叉树的性质
    • 二、二叉树练习题
  • 总结


一、二叉树的概念及结构

1.概念

一棵二叉树是结点的一个有限集合,该集合:

  1. 或者为空
  2. 由一个根节点加上两棵别称为左子树和右子树的二叉树组成
    在这里插入图片描述
    如上图就是二叉树,可以看出:
    1.二叉树每个节点的度<=2

2. 二叉树的子树有左右之分,次序不能颠倒,因此二叉树是有序树

注意:对于任意的二叉树都是由以下几种情况复合而成的:

在这里插入图片描述

2.现实中的二叉树

在这里插入图片描述

3. 特殊的二叉树:

1)满二叉树:一个二叉树,如果每一个层的结点数都达到最大值,则这个二叉树就是满二叉树。也就是说,如果一个二叉树的层数为K,且结点总数是2^K-1 ,则它就是满二叉树。

在这里插入图片描述

如上图:这是一棵满二叉树:
推导:

在这里插入图片描述
该二叉树的高度是h = 4.
则该二叉树的节点总数Sn = 2^0 + 2^1 + 2^2 + …+2^h-1

由等比数列求前n项和公式:
在这里插入图片描述
带入数据:
Sn = 2^h -1 (Sn为二叉树节点总数,h为树的高度)

所以这就是一棵标准的满二叉树。

如果我们知道一棵满二叉树的总节点个数,也可以推导出改满二叉树的节点的高度

推导如下:
在这里插入图片描述

h = log2(Sn+1)

2)完全二叉树:完全二叉树是效率很高的数据结构,完全二叉树是由满二叉树而引出来的。对于深度为K的,有n个结点的二叉树,当且仅当其每一个结点都与深度为K的满二叉树中编号从1至n的结点一一对应时称之为完全二叉树。

通俗地讲:
1)前面每层节点的度都是2
2)最后一层节点必须连续

要注意的是满二叉树是一种特殊的完全二叉树。
比如说下面这个:

在这里插入图片描述
解释如下:
在这里插入图片描述

如果是这几种情况,就不是完全二叉树:
在这里插入图片描述
因为它们不符合第二点要求:最后一层是连续的。

由满二叉树和二叉树的定义可知,满二叉数是特殊的完全二叉树。

类似地:当我们知道完全二叉树的节点数,可以推导完全二叉树的高度:
在这里插入图片描述

3.二叉树的性质

1. 若规定根节点的层数为1,则一棵非空二叉树的第n层上最多有2^(n-1) 个结点.
2. 若规定根节点的层数为1,则深度为h的二叉树的最大结点数是2^h - 1 .
3. 若规定根节点的层数为1,具有n个结点的满二叉树的深度,h= log2(n+1). (ps: 是log以2为底,n+1为对数)

4. 对任何一棵二叉树, 如果度为0其叶结点个数为n0, 度为2的分支结点个数为n2 ,则有 n0= n2+1
第四点解析:
以下图为例,度为0的节点的个数有4个,度为2的节点的个数有3个,则n0 = n2 + 1
在这里插入图片描述

5. 对于具有n个结点的完全二叉树,如果按照从上至下从左至右的数组顺序对所有节点从0开始编号,则对
于序号为i的结点有:

1)若i>0,i位置节点的双亲序号:(i-1)/2;i=0,i为根节点编号,无双亲节点

2)若2i+1<n,左孩子序号:2i+1,2i+1>=n否则无左孩子

3) 若2i+2<n,右孩子序号:2i+2,2i+2>=n否则无右孩子
在这里插入图片描述

以该例子为例套进去即可。

前面三点是上面推导过的,第四点和第五点是重点要记忆的


二、二叉树练习题

1. 某二叉树共有 399 个结点,其中有 199 个度为 2 的结点,
 则该二叉树中的叶子结点数为( )
A 不存在这样的二叉树
B 200
C 198
D 199

解析:

运用上面所讲的性质四即可秒杀。
4. 对任何一棵二叉树, 如果度为0其叶结点个数为n0, 度为2的分支结点个数为n2 ,则有 n0= n2+1

度为2的节点有199个,即n2 = 199,那么度为n0的节点 = n2+1 = 200

2.在具有 2n 个结点的完全二叉树中,叶子结点个数为( )
A n
B n+1
C n-1
D n/2

解析:

假设这棵完全二叉树的度为0,1,2的节点个数分别为:
x0 ,x1,x2
有: x0+x1+x2 = 2n
又根据性质四,x0 = x2 + 1,所以化简一下得:
x2+1+x1+x2 = 2n
对于一棵完全二叉树来说,度为1的节点的个数要么为0,要么为1
在这里插入图片描述
以上面这棵完全二叉树为例,度为1的节点只有1个
在这里插入图片描述
以上面这棵完全二叉树的节点为例:度为1的节点有0个。
所以对于任何一颗完全二叉树来说,度为1的节点只有1个或0个。
则x1 = 1或x1 = 0
当x1 = 1时,
x2+1+x1+x2 = 2n -->2*x2 + 2 = 2n,
所以x2 = n

而当x1 = 0时,2*x2+1 = 2n,x2 = (2n-1)/2,节点个数不可能为小数,所以不成立
所以该完全二叉树的度为1的节点个数为n

3.一棵完全二叉树的节点数位为531个,那么这棵树的高度为( )
A 11
B 10
C 8
D 12

解析:
以这棵二叉树为例:
对于一棵完全二叉树,节点个数与高度的关系有:
n = 2^h-1-x(x为完全二叉树最后一层中缺少的节点的个数)
缺少的节点是相对于满二叉树来说的。
在这里插入图片描述
x的最好情况和最坏情况如下:
在这里插入图片描述

当h = 10时,节点个数为 2^10 - 1 - x ,
此时x的取值范围是[0,2^9-1-1],即[0,510]
代入原数据 531 = 2^10 -1 -x,x = 492,在取值范围内。

当n = 11时,节点个数为2^11 -1 -x,
此时x的取值范围是[0,2^10-1-1],即[0,1022]
代入原数据 531 = 2^11 -1 -x,x = 1516,不在取值范围内,不成立。
而对于当h = 12时,更不可能了。
对与h = 8,2^8 = 256,也不可能
所以h = 10,选B

4.一个具有767个节点的完全二叉树,其叶子节点个数为()
A 383
B 384
C 385
D 386

解析:

这道题的解法与第2题解法相同
直接画图分析:
在这里插入图片描述

总结

熟知二叉树的相关知识概念和性质,非常有助于进一步二叉树广度优先搜索和深度优先搜索的学习。

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

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

相关文章

线性表的链式表示

文章目录1.单链表1.1单链表的表示1.1.1构建 带头结点的单链表1.2基本操作1.2.1 头插法1.2.2 尾插法1.2.3 按序号查找结点1.2.4 按值查找表结点1.2.5 插入结点操作扩展&#xff1a;前插操作1.2.6 删除结点操作扩展&#xff1a;删除结点*p1.2.7 求表长操作2.双链表2.1 双链表的表…

JVM相关知识

JVM类加载过程类什么时候被加载什么情况下会发生栈内存溢出JVM内存模型常量池回收方法区垃圾回收流程圾收集算法分代收集理论标记-清除算法标记-复制算法标记-整理算法类加载过程 加载–验证–准备–解析–初始化–使用–卸载 ​ 加载&#xff1a;通过全类名获取类的二进制流…

【C++】非类型的模板参数,特化

目录 1.类型模板参数和非类型模板参数 2.特化 3. 模板的分离编译 4.模板的优缺点 1.类型模板参数和非类型模板参数 之前写模板传的都是类型——类型模板参数 现在想定义两个静态数组&#xff0c;数组长度不同&#xff0c;就可以用模板参数传数值而不是传类型 非类型模板…

Docker与微服务实战2022

基础篇(零基小白)1.Docker简介1.1 是什么问题&#xff1a;为什么会有docker出现&#xff1f;您要如何确保应用能够在这些环境中运行和通过质量检测&#xff1f;并且在部署过程中不出现令人头疼的版本、配置问题&#xff0c;也无需重新编写代码和进行故障修复&#xff1f; 答案就…

Android源码分析 - View的触摸事件分发

0. 相关分享 Android源码分析 - InputManagerService与触摸事件 1. 接收Input系统发送来的事件 时序图源&#xff1a;稀土掘金 在注册Window的时候&#xff0c;来到ViewRootImpl&#xff0c;其中不仅发起窗口注册&#xff0c;还开启了输入事件的监听&#xff1a; //ViewRoo…

nuxt3使用总结

目录 背景 安装 项目配置 路由 Tailwindcss引入 全局样式配置 css预处理器 安装 Tailwindcss 项目的配置 部署上线 seo优化 背景 新入职了一家公司&#xff0c;刚进入公司第一个需求就是先做一个公司的官网&#xff0c;需要使用vue写&#xff0c;作为祖师爷的粉丝…

Java 电话号码的组合

电话号码的字母组合中等给定一个仅包含数字 2-9 的字符串&#xff0c;返回所有它能表示的字母组合。答案可以按 任意顺序 返回。给出数字到字母的映射如下&#xff08;与电话按键相同&#xff09;。注意 1 不对应任何字母。示例 1&#xff1a;输入&#xff1a;digits "23…

案例学习--016 消息队列作用和意义

简介MQ全称为Message Queue, 是一种分布式应用程序的的通信方法&#xff0c;它是消费-生产者模型的一个典型的代表&#xff0c;producer往消息队列中不断写入消息&#xff0c;而另一端consumer则可以读取或者订阅队列中的消息。主要产品有&#xff1a;ActiveMQ、RocketMQ、Rabb…

【RV1126】RKMedia模块简介

文章目录简介源码与编译rkmedia log等级配置目录参考文档&#xff1a;【Rockchip RKMedia Development Guide】rkmedia的手册在sdk目录下/docs/RV1126_RV1109/Multimedia rkmedia的代码在sdk目录下/external/rkmedia rkmedia的demo在sdk目录下/external/rkmedia/examples&…

antlr4-maven-plugin简单学习

1. 序言 antlr4-maven-plugin的官方介绍为&#xff1a; The ANTLR 4 plugin for Maven can generate parsers for any number of grammars in your project.博客《 mac上的Antlr4环境搭建》&#xff0c;有介绍如何通过antlr4-maven-plugin实现.g4文件的编译 这里将介绍antlr4-…

弹性存储-对象存储OSS部分

对象存储介绍 对象存储&#xff08;object storage service&#xff0c;简称oss&#xff09;&#xff0c;具备与平台无关的rest api接口&#xff0c;可提供99.9999999999%&#xff08;12个9&#xff09;的数据持久性和99.995%的数据可用性。 OSS优势 功能介绍 存储空间bucke…

秒杀高并发解决方案

秒杀高并发解决方案 1.秒杀/高并发方案-介绍 秒杀/高并发 其实主要解决两个问题&#xff0c;一个是并发读&#xff0c;一个是并发写并发读的核心优化理念是尽量减少用户到 DB 来"读"数据&#xff0c;或者让他们读更少的数据, 并 发写的处理原则也一样针对秒杀系统需…

麒麟服务器V10 版本 安装 Anaconda教程,也就是安装Python环境的教程(亲测有效)

目录1 Anaconda 是什么2 安装1 Anaconda 是什么 你可以理解为一个软件&#xff0c;和QQ一样的软件&#xff0c;你安装之后&#xff0c;里面就有naconda包括Conda、Python以及一大堆安装好的工具包&#xff0c;比如&#xff1a;numpy、pandas等 1&#xff09;包含conda&#x…

【C++学习】类和对象(上)

前言&#xff1a; 由于之前电脑“嗝屁”了&#xff0c;导致这之前一直没有更新博客&#xff0c;今天才拿到电脑&#xff0c;在这里说声抱歉。接下来就进入今天的学习&#xff0c;在之前我们已经对【C】进行了初步的认识&#xff0c;有了之前的知识铺垫&#xff0c;今天我们将来…

初识BFC

初识BFC 先说如何开启BFC&#xff1a; 1.设置display属性&#xff1a;inline-block&#xff0c;flex&#xff0c;grid 2.设置定位属性&#xff1a;absolute&#xff0c;fixed 3.设置overflow属性&#xff1a;hidden&#xff0c;auto&#xff0c;scroll 4.设置浮动&#xf…

英雄算法学习路线

文章目录零、自我介绍一、关于拜师二、关于编程语言三、算法学习路线1、算法集训1&#xff09;九日集训2&#xff09;每月算法集训2、算法专栏3、算法总包四、英雄算法联盟1、英雄算法联盟是什么&#xff1f;2、如何加入英雄算法联盟&#xff1f;3、为何会有英雄算法联盟&#…

Linux系统安装mysql(rpm版)

目录 Linux系统安装mysql&#xff08;rpm版&#xff09; 1、检测当前系统中是否安装MySQL数据库 2、将mysql安装包上传到Linux并解压 3、按照顺序安装rpm软件包 4、启动mysql 5、设置开机自启 6、查看已启动的服务 7、查看临时密码 8、登录mysql&#xff0c;输入临时密…

C++ STL学习之【vector的使用】

✨个人主页&#xff1a; Yohifo &#x1f389;所属专栏&#xff1a; C修行之路 &#x1f38a;每篇一句&#xff1a; 图片来源 The power of imagination makes us infinite. 想象力的力量使我们无限。 文章目录&#x1f4d8;前言&#x1f4d8;正文1、默认成员函数1.1、默认构造…

STM32之SPI

SPISPI介绍SPI是串行外设接口(Serial Peripherallnterface)的缩写&#xff0c;是一种高速的&#xff0c;全双工&#xff0c;同步的通信总线&#xff0c;并且在芯片的管脚上只占用四根线&#xff0c;节约了芯片的管脚&#xff0c;同时为PCB的布局上节省空间&#xff0c;提供方便…

蓝桥杯嵌入式(G4系列):定时器捕获

前言&#xff1a; 定时器的三大功能还剩下最后一个捕获&#xff0c;而这在蓝桥杯嵌入式开发板上也有555定时器可以作为信号发生器供定时器来测量。 原理图部分&#xff1a; 开发板上集成了两个555定时器&#xff0c;一个通过跳线帽跟PA15相连&#xff0c;最终接到了旋钮R40上&…