二叉树知识概括锦囊(一)

news2024/11/16 9:49:17

作者:爱塔居

专栏:数据结构

作者简介:大三学生,希望跟大家一起进步!

文章目录

目录

文章目录

一、树形结构

二、树的基础知识

三、二叉树

3.1 概念

3.2 特殊的二叉树

 3.3 二叉树的性质

四、习题挑战


一、树形结构

树是一种非线性的数据结构,它是由n(n>=0)个有限结点组成一个具有层次关系的集合,把它叫做树是因为它是根朝上,叶子朝下的。

以下这个图就是二叉树:

树有以下特点:

🎈有一个特殊的结点,称为根结点,根结点没有前驱结点

🎗除根结点外,其余结点被分为M(M>0)个互不相交的集合T^{_{1}}T^{_{2}}、……、T_{m},其中每一个集合T(1<=i<=m)又是一棵与树类似的子树。每棵子树的根结点有且只有一个前驱,可以有0个或多个后继。

🎀树是递归定义的。

🍟树形结构中,子树之间不能有交集。而且除了根结点,每个结点有且仅有一个父结点

这两种都不是二叉树:

🧁一棵N个结点的树有N-1条边

二、树的基础知识

结点的度:一个结点含有子树的个数,称为该结点的度;如上图:A的度为6

树的度:一棵树中所有结点度的最大值称为树的度;如上图:树的度为6

叶子结点或终端结点:度为0的结点称为叶子结点;如上图:B、C、H、I、P、Q、K、L、M、N是叶子结点。

双亲结点或者父结点:若一个结点含有子结点;则这个结点称为其子节点的父节点;如上图,A是B的父结点。

孩子结点或子结点:一个结点含有的子树的根结点称为该结点的子节点:B是A的孩子结点

根结点:一个树,没有双亲结点的结点;就如图中的A

结点的层次:从根开始定义,根为第一层,根的子节点为第2层,以此类推。

树的高度或深度:树中结点的最大层次;如上图:树的高度为4

三、二叉树

3.1 概念

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

1.或者为空

2.或者是由一个根结点加上两棵别称为左子树和右子树的二叉树组成。

二叉树不存在度大于2的结点且二叉树的子树有左右之分,次序不能颠倒,所以二叉树是有序树。

3.2 特殊的二叉树

 满二叉树在外观上是一个三角形的结构,比较好认。而且如果一棵二叉树的层数为K,且结点总数为2^{^{k}}-1,则它就是满二叉树。我们还能得出第K层的结点数为2^{k-1}.

满二叉树

 如果二叉树中除去最后一层节点为满二叉树,且最后一层的结点依次从左到右分布,则此二叉树被称为完全二叉树。满二叉树是一种特殊的完全二叉树。

 3.3 二叉树的性质

1.若规定根结点的层数为1,则一颗非空二叉树的第i层上最多有2^{i-1}(i>0)个结点(也就是当二叉树为完全二叉树的情况)。

2.若规定只有根结点的二叉树的深度为,则深度为K的二叉树的最大结点数是2^{k}-1(k>=0)(当二叉树为满二叉树的情况)。

3.对任何一棵二叉树,如果其叶结点个数为n_{0},度为2的非叶结点个数为n^{_{2}},则有n_{0}=n_{2}+1

推算过程:

设二叉树度为0的结点数为n_{0},度为1的结点数为n_{1},度为2的结点数为n_{2},总结点数设为N。

二叉树只有这三种结点,故N=n_{0}+n_{1}+n_{2}————①;

我们前面提过,结点为N的二叉树,会有N-1条边。

N-1=2\times n_{2}+1\times n_{1}+0\times n_{0},故N=2\times n_{2}+n_{1}+1————②;

①②联合起来:n_{0}+n_{1}+n_{2}=2\times n_{2}+n_{1}+1,简化后n_{0_{}}=n_{2}+1

4.具有n个结点的完全二叉树的深度k为log_{2}^{(n+1)}上取整。

推导过程:

因为深度为k的二叉树的最大结点数为2^{k}-1

2^{k}-1=n \Rightarrow 2^{k}=n+1 \Rightarrow k=log{_{2}}^{n+1}

5. 对于具有n个结点的完全二叉树,如果按照从上至下从左至右的顺序对所有节点从0开始编号,则对于序号为i的结点有:
若i>0,双亲序号:(i-1)/2;i=0,i为根结点编号,无双亲结点
若2i+1<n,左孩子序号:2i+1,否则无左孩子
若2i+2<n,右孩子序号:2i+2,否则无右孩子
 

四、习题挑战

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

推导过程:n_{0}=n_{2}+1\Rightarrow n_{0}=200

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

推导过程:

2n>>偶数个结点的情况:

如图,n=5,叶子结点个数为5

正经推算:

2n=n_{0}+n_{1}+n_{2}

偶数结点的情况:n_{1}=1

n_{0}=n_{2}+1

2n=n_{0}+1+n_{0}-1=2\times n_{0}\Rightarrow n=n_{0}

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

推导过程:

奇数个结点:

n_{1}=0

故 n_{0}+n_{2}=767

又因为n_{0}=n_{2}+1

2\times n_{0}-1=767\Rightarrow 2\times n_{0}=768\Rightarrow n_{0}=384

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

推导过程:具有n个结点的完全二叉树的深度k为log_{2}^{(n+1)}上取整。

 k=log_{2}^{532}

2^{9}=512<532 2^{10}=1024>532

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

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

相关文章

【论文速递】IJCV2022 - CRCNet:基于交叉参考和区域-全局条件网络的小样本分割

【论文速递】IJCV2022 - CRCNet:基于交叉参考和区域-全局条件网络的小样本分割 【论文原文】&#xff1a;CRCNet: Few-shot Segmentation with Cross-Reference and Region-Global Conditional Networks 获取地址&#xff1a;https://link.springer.com/article/10.1007/s112…

BACnet协议详解——应用层说明一

文章目录写在前面1. 应用层模型1.1 需确认的应用层服务1.2 无需确认的应用层服务2 BACnet报文的分段2.1 报文分段规则2.1.1 APDU数据流的分段规则2.1.2 APDU最大长度的确定2.1.3 可接受的最大分段数2.2 分段协议控制信息&#xff08;PCI&#xff09;写在前面 年关将至&#xf…

分享77个PHP源码,总有一款适合您

PHP源码 分享77个PHP源码&#xff0c;总有一款适合您 下面是文件的名字&#xff0c;我放了一些图片&#xff0c;文章里不是所有的图主要是放不下...&#xff0c; 77个PHP源码下载链接&#xff1a;https://pan.baidu.com/s/12hh-lhIVPL1bZw-d2sfVlQ?pwdvhqj 提取码&#xff…

selenium 操作已经打开的浏览器

有时通过selenium打开网站时&#xff0c;发现有些网站需要扫码登录&#xff0c;就很头疼&#xff0c;导致爬虫进展不下去。 如果继续想使用selenium进行数据抓取&#xff0c;下一步应该怎么办呢&#xff1f; 步骤一&#xff1a;创建文件夹 在电脑的D盘或者F盘或者合适的盘创建…

《Python数据分析基础教程:NumPy学习指南:第二版》读书笔记

内容 主要介绍了NumPy库中的函数。 组成方式 用非常零散的知识点串联成章节。 内容摘要 极简地展示了章节中所运用的函数。 第一章 arrange函数创建NumPy数组。 第二章 NumPy特性 在NumPy中&#xff0c;复数的虚部是用j表示的。如果数组中包含复数元素&#xff0c;则…

VMware vSphere 中 Clone 与 Template 的区别

VMware vSphere 中 Clone 与 Template 的区别 Clone&#xff08;克隆&#xff09;Template&#xff08;模板&#xff09;克隆在克隆过程中为正在运行的虚拟机创建一个精确的副本模板作为具有根据组织标准预先定义的配置的虚拟机的基线映像。克隆虚拟机使用相同的配置和安装的软…

【C语言初阶】指针

文章目录1.指针是什么2.指针和指针类型2.1指针的解引用2.1指针类型的意义3.野指针3.1野指针成因3.2如何规避野指针4.指针运算4.1指针-整数4.2指针-指针4.3指针的关系运算5.指针和数组6.二级指针7.指针数组1.指针是什么 指针理解的2个要点&#xff1a; 指针是内存中一个最小单元…

【GD32F427开发板试用】+使用USBFS轻松实现HID键盘应用

本篇文章来自极术社区与兆易创新组织的GD32F427开发板评测活动&#xff0c;更多开发板试用活动请关注极术社区网站。作者&#xff1a;不锈钢铁侠 前言 最近有项目需要用到键盘自动输入功能&#xff0c;提升工作效率。故使用该开发板实现自定义输入内容并通过按键控制自动通过u…

STM32——外部中断

目录 外部中断简述 什么是外部中断 传统单片机与新型单片机外部中断区别 STM32外部中断请求 STM32中断线与IO口的对应 STM32 中断服务函数 外部中断与中断服务函数的对应 中断服务函数列表 STM32外部中断程序编写 常用的库函数 外部中断的一般配置步骤 外部中断简…

【ArcGIS微课1000例】0058:波段合成(CompositeBands)工具的使用

波段合成工具常见于遥感软件,例如Envi和Erdas等,用于将多个单波段数据合成为一个多波段数据集,在ArcGIS中也提供了波段合成的工具,使用灵活方便。 文章目录 一、波段合成工具介绍二、波段合成工具案例1. 输出Esri Grid格式2. 输出tif格式3. 输出jgp格式4. 输出其它格式一、…

sqlite 使用distinct时组合索引可能不是你想的那样

目录先来唠唠嗑吧~那一探究竟吧&#xff01;表结构及索引信息我的查询场景到底命中什么索引了&#xff1f;简单小结下~先来唠唠嗑吧~ 在使用sqlite作为词条数据库查询数据&#xff0c;发现有的sql执行很快&#xff0c;有的sql执行很慢&#xff0c;你以为是没有走索引吗&#x…

深入浅出进程控制

文章目录进程控制浅谈fork写时拷贝fork调用失败的原因进程终止进程退出的场景进程常见退出方法查看进程退出码echo $? :查看进程退出码exit和_exit进程等待进程等待的方法waitwaitpid获取子进程status宏定义查看进程是否正常退出&#xff0c;查看退出码再谈僵尸进程浅谈阻塞等…

基于.Net Core开发的支付SDK,简化支付功能开发

更多开源项目请查看&#xff1a;一个专注推荐.Net开源项目的榜单 在我们做项目中&#xff0c;不管是电商系统、外卖系统、还是上门维修系统等等&#xff0c;都需要支付功能&#xff0c;这就需要我们与第三方支付平台进行对接&#xff0c;但是第三方平台文档&#xff0c;往往都存…

05语法分析——自下而上分析

文章目录一、自下而上分析基本问题二、算符优先分析构造FIRSTVT(P)的算法构造LASTVT(P)的算法构造优先表的算法三、LR分析法1.LR(0)构造LR(0)项目集规范族构造识别活前缀的DFA构造LR(0)分析表2.SLRSLR解决冲突办法SLR(1)分析表的构造算法3.LR(1)【规范LR】LR(1)项目集I的闭包状…

【MySQL基础】运算符及相关函数详解

序号系列文章3【MySQL基础】MySQL基本数据类型4【MySQL基础】MySQL表的七大约束5【MySQL基础】字符集与校对集详解6【MySQL基础】MySQL单表操作详解文章目录前言MySQL运算符1&#xff0c;算术运算符1.1&#xff0c;算术运算符的基本使用1.2&#xff0c;常用数学函数的基本使用2…

iOS:OpenGLES 实验室之2D篇 第一弹 の 智能弹幕

本文字数&#xff1a;3046字预计阅读时间&#xff1a;15 分钟iOS&#xff1a;OpenGLES 实验室之2D篇 第一弹 の 智能弹幕笔者之前发表的音视频文章&#xff0c;有图像的处理&#xff0c;音频的重采样等等&#xff0c;都属于入门级别。通过阅读它们&#xff0c;读者能对音视频有…

【复习 自用】JavaScript知识汇总(DOM)

注&#xff1a;之前学过JavaScript&#xff0c;本贴仅用于复习(自用)&#xff0c;建议没基础的朋友先学基础。会混入typescript&#xff01; 更新中~~~~~ Dom核心内容 创建节点 ① document.write() 是直接将内容写入页面的内容流&#xff0c;但是文档流执行完毕&#xff0c…

云原生技能树-docker caontainer 操作

运行 一个Docker镜像(image)运行后&#xff0c;就是一个容器实例&#xff0c;称为container 以镜像hello-world为例&#xff0c;启动容器&#xff1a; docker container run -it hello-world 可以看到输出了Hello World 信息&#xff1a; 以下描述错误的是&#xff1f; 答…

数字逻辑理论——从卡诺图到门电路

卡诺图化简 卡诺图化简 第一步&#xff1a;在卡诺图中圈出相邻为1的小方格&#xff08;方格的个数为2m2^{m}2m&#xff09;&#xff0c;圈里面的1越多越好&#xff0c;并且这个小方格可以重复使用。 第二步&#xff1a;上一步中的方格或者圈出来的方框——每一个都代表一个与…

Linux软件安装及管理程序

Linux安装及管理程序Linux软件安装及管理程序一、Linux应用程序基础二、RPM软件包管理工具2.1、RPM介绍2.2、RPM命令三、源码编译安装四、yum安装Linux软件安装及管理程序 一、Linux应用程序基础 应用程序与系统命令的关系 角色系统命令应用程序文件位置般在/bin和/sbin目录…