树与二叉树、图的基本概念

一、树与二叉树的基本概念和性质

1. 树的的性质

1)树中的结点数 n 等于所有结点的度数之和加 1

【说明】结点的度是指该结点的孩子数量,每个结点与其每个孩子都由唯一的边相连,因此树中所有结点的度数之和等于树中的边数之和。树中的结点(除根外)都有唯一的双亲,因此结点数 n 等于边数之和加 1,即所有结点的度数之和加 1 。

常用于求解树结点与度之间关系的有:
① 总结点数= n0+ n1 + n2 + …+ nm
② 总分支数= 1n1 + 2n2 + …+ mnm (度为 m 的结点引出 m 条分支);
③ 总结点数=总分支数 + 1 。

2)度为 m 的树中第 i 层上至多有 mi-1 个结点(i>=1)

【说明】第 1 层至多有 1 个结点(即根结点),第 2 层至多有 m 个结点,第 3 层至多有 m2 个结点,以此类推。使用数学归纳法可推出第 i 层至多有 mi-1个结点。

3)高度为 h 的 m 叉树至多有 (mh - 1) / (m - 1) 个结点

【说明】当各层结点数达到最大时,树中至多有 1 + m + m2 +…+ mh-1 = (mh - 1) / (m - 1) 个结点。

4)具有 n 个结点的 m 叉树的最小高度 h 为 ⌈logm(n × (m - 1) + 1)⌉

【说明】为使树的高度最小,在前 h - 1 层中,每层的结点数都要达到最大,前 h - 1 层最多有 (mh-1 - 1) / (m - 1) 个结点,前 h 层最多有 (mh - 1) / (m - 1) 个结点。因此 (mh-1 - 1) / (m - 1) < n <= (mh - 1) / (m - 1) ,即 h - 1 < logm(n × (m - 1) + 1) <= h,解得 hmin = ⌈logm(n × (m - 1) + 1)⌉。

5)具有 n 个结点的 m 叉树的最大高度 h 为 n - m + 1

【说明】由于树的度为 m , 因此至少有一个结点有 m 个孩子,它们处于同一层。为使树的高度最大,其他层可仅有一个结点,因此最大高度(层数)为 n - m + 1 。由此,也可逆推出高度为 h、度为 m 的树至少有 h + m - 1 个结点。

2. 二叉树的性质

1)非空二叉树上的叶结点数等于度为 2 的结点数加 1 ,即 n0 = n2 + 1

【证明】设度为 0、1 和 2 的结点个数分别为 n0、n1 和 n2,结点总数 n = n0 + n1 + n2 。再看二叉树中的分支数,除根结点外,其余结点都有一个分支进入,设 B 为分支总数,则 n = B + 1 。由于这些分支是由度为 1 或 2 的结点射出的,所以又有 B = n1 + 2n2 。于是得 n0 + n1 + n2 = n1 + 2n2 + 1,则n0 = n2 + 1 。

2)非空二叉树的第 k 层至多有 2k-1 个结点(k>=1)

【说明】第 1 层至多有 20 = 1 个结点(根),第 2 层至多有 21 = 2 个结点,以此类推,可以证明其为一个公比为 2 的等比数列 2k-1

3)高度为 h 的二叉树至多有 2h - 1 个结点(h>=1)

【说明】该性质利用性质2) 求前 h 项的和,即等比数列求和的结果。

性质2) 和 3) 还可以拓展到 m 叉树的情况,即 m 叉树的第 k 层最多有 mk-1 个结点,高度为 h 的 m 叉树至多有 (mk - 1) / (m - 1) 个结点。

4)对完全二叉树按从上到下、从左到右的顺序依次编号 1, 2, …, n, 则有以下关系:

① 当 i > 1 时,结点 i 的双亲的编号为 ⌊n / 2⌋,即当 i 为偶数时,其双亲的编号为 i / 2, 它是双亲的左孩子;当 i 为奇数时,其双亲的编号为 (i - 1) / 2, 它是双亲的右孩子。

② 当 2i <= n 时,结点 i 的左孩子编号为 2i,否则无左孩子。

③ 当 2i + 1 <= n 时,结点 i 的右孩子编号为 2i + 1 ,否则无右孩子。

④ 结点 i 所在层次(深度)为 ⌊log2i⌋ + 1。

5)具有 n 个(n >0) 结点的完全二叉树的高度为 ⌈log2(n + 1)⌉ 或 ⌊log2n⌋ + 1

【证明】设高度为 h,根据性质3) 和完全二叉树的定义有:2h-1 - 1 < n <= 2h - 1 或者 2h-1 <= n < 2h,得 2h-1 < n + 1 <= 2h ,即 h - 1 < log2(n + 1) <= h,因为 h 是正整数,所以 h = ⌈log2(n + 1)⌉,或者得 h - 1 <= log2n < h,所以 h = ⌊log2n⌋ + 1。

3. 二叉树与度为 2 的有序树的区别

1)度为 2 的树至少有 3 个结点,而二叉树可以为空。

2)度为 2 的有序树的孩子的左右次序是相对于另一孩子而言的,若某个结点只有一个孩子,则这个孩子就无须区分其左右次序,而二叉树无论其孩子数是否为 2,均需确定其左右次序,即二叉树的结点次序不是相对于另一结点而言的,而是确定的。

4. 几种特殊的二叉树

1)满二叉树:一棵高度为 h, 且含有 2h- 1 个结点的二叉树称为满二叉树,即树中的每层都含有最多的结点。满二叉树的叶结点都集中在二叉树的最下一层,并且除叶结点之外的每个结点度数均为 2 。

可以对满二叉树按层序编号:约定编号从根结点(根结点编号为 1 ) 起,自上而下,自左向右。这样,每个结点对应一个编号,对于编号为 i 的结点,若有双亲,则其双亲为 ⌊i / 2⌋,若有左孩子,则左孩子为 2i;若有右孩子,则右孩子为 2i + 1 。

2)完全二叉树:高度为 h 、有 n 个结点的二叉树,当且仅当其每个结点都与高度为 h 的满二叉树中编号为 1~n 的结点一一对应时,称为完全二叉树,其特点如下:

① 若 i <= ⌊n / 2⌋,则结点 i 为分支结点,否则为叶结点,即最后一个分支结点的编号为 ⌊n / 2⌋ 。

② 叶结点只可能在层次最大的两层上出现。对于最大层次中的叶结点,都依次排列在该层最左边的位置上(若删除满二叉树中最底层、最右边的连续 2 个或以上的叶结点,则倒数第二层将会出现叶结点)。

③ 若有度为 1 的结点,则最多只可能有一个,且该结点只有左孩子而无右孩子(重要特征,度为 1 的分支结点只可能是最后一个分支结点,其结点编号为 ⌊n / 2⌋ )。

④ 按层序编号后,一旦出现某结点(如结点 i ) 为叶结点或只有左孩子,则编号大于 i 的结点均为叶结点。(与结论①和结论③是相通的)。

⑤ 若 n 为奇数,则每个分支结点都有左孩子和右孩子;若 n 为偶数,则编号最大的分支结点(编号为 n / 2 ) 只有左孩子,没有右孩子,其余分支结点都有左、右孩子。

3)二叉排序树:左子树上所有结点的关键字均小于根结点的关键字;右子树上的所有结点的关键字均大于根结点的关键字;左子树和右子树又各是一棵二叉排序树。

4)平衡二叉树:树上任意一个结点的左子树和右子树的深度之差不超过 1 。

有关二叉排序树和平衡二叉树的内容详见:【树形结构查找(BST、AVL树、RBT)】

5)正则二叉树:树中每个分支结点都有 2 个孩子,即树中只有度为 0 或 2 的结点。

正则k叉树:树中每个分支结点都有 k 个孩子,即树中只有度为 0 或 k 的结点。

5. 有关树与二叉树性质的例题

① 【2010 统考真题】在一棵度为 4 的树 T 中,若有 20 个度为 4 的结点、10 个度为 3 的结点、1 个度为 2 的结点和 10 个度为 1 的结点,则树 T 的叶结点个数是( B )。
A. 41
B. 82
C. 113
D. 122

② 【2016 统考真题】若森林 F 有 15 条边、25 个结点,则 F 包含树的个数是( C )。
A. 8
B. 9
C. 10
D. 11

③ 【2009 统考真题】已知一棵完全二叉树的笫 6 层(设根为第 1 层)有 8 个叶结点,则该完全二叉树的结点个数最多是( C )。
A. 39
B. 52
C. 111
D. 119

④ 【2011 统考真题】若一棵完全二叉树有 768 个结点,则该二叉树中叶结点的个数是( C )。
A. 257
B. 258
C. 384
D. 385

⑤ 【2018 统考真题】设一棵非空完全二叉树 T 的所有叶结点均位于同一层,且每个非叶结点都有 2 个子结点。若 T 有 k 个叶结点,则 T 的结点总数是( A )。
A. 2 × k - 1
B. 2 × k
C. k2
D. 2k - 1

⑥【2020 统考真题】对于任意一棵高度为 5 且有 10 个结点的二叉树,若采用顺序存储结构保存,每个结点占 1 个存储单元(仅存放结点的数据信息),则存放该二叉树需要的存储单元数量至少是( A )。
A. 31
B. 16
C. 15
D. 10

⑦ 【2022 统考真题】若三叉树 T 中有 244 个结点(叶结点的高度为 1 ),则 T 的高度至少是( C )。
A. 8
B. 7
C. 6
D. 5

二、图的基本概念和性质

1. 图的一些基本概念和术语

1)有向图与无向图

若 E 是无向边(简称边)的有限集合时,则图 G 为无向图。边是顶点的无序对,记为 (v, w) 或 (w, v)。可以说 w 和 v 互为邻接点。边 (v, w) 依附于 w 和 v , 或称边 (v, w) 和 v, w 相关联。

若 E 是有向边(也称弧)的有限集合时,则图 G 为有向图。弧是顶点的有序对,记为 <v, w>,其中 v, w 是顶点,v 称为弧尾,w 称为弧头,<v, w> 称为从 v 到 w 的弧,也称 v 邻接到 w 。

2)简单图与多重图

一个图 G 如果满足:
① 不存在重复边;
② 不存在顶点到自身的边。
那么称图 G 为简单图。若图 G 中某两个顶点之间的边数大于 1 条,又允许顶点通过一条边和自身关联,则称图G 为多重图。多重图和简单图的定义是相对的。【数据结构中仅讨论简单图】

3)完全图(又称简单完全图

对于无向图,|E| 的取值范围为 0 到 n × (n - 1) / 2,有 n × (n - 1) / 2 条边的无向图称为完全图,在完全图中任意两个顶点之间都存在边。

对于有向图,|E| 的取值范围为 0 到 n × (n - 1) , 有 n × (n - 1) 条弧的有向图称为有向完全图,在有向完全图中任意两个顶点之间都存在方向相反的两条弧。

4)子图与生成子图

设有两个图 G = (V, E) 和 G’= (V’, E’),若 V’ 是 V 的子集,且 E’ 是 E 的子集,则称 G’ 是 G 的子图。若有满足 V(G’) = V(G) 的子图 G’ ,则称其为 G 的生成子图

并非 V 和 E 的任何子集都能构成 G 的子图,因为这样的子集可能不是图,即 E 的子集中的某些边关联的顶点可能不在这个 V 的子集中。

5)连通、连通图和连通分量:(针对无向图

① 在无向图中,若从顶点 v 到顶点 w 有路径存在,则称 v 和 w 是连通的。
② 若图 G 中任意两个顶点都是连通的,则称图 G 为连通图,否则称为非连通图
③ 无向图中的极大连通子图称为连通分量

连通的无向图只有一个极大连通子图,即它本身。

假设一个图有 n 个顶点,如果边数小于 n - 1,那么此图必是非连通图。
【思考】:如果图是非连通图,那么最多可以有多少条边?
【答】:由 n - 1 个顶点构成一个完全图,此时再加入一个顶点则变成非连通图。

6)强连通、强连通图和强连通分量:(针对无向图

① 在有向图中,如果有一对顶点 v 和 w,从 v 到 w 和从 w 到 v 之间都有路径,则称这两个顶点是强连通的。
② 若图中任何一对顶点都是强连通的,则称此图为强连通图
③ 有向图中的极大强连通子图称为有向图的强连通分量

【思考】:假设一个有向图有 n 个顶点,如果是强连通图,那么最少需要有多少条边?
【答】:至少需要 n 条边,构成一个环路。

在无向图中讨论连通性,在有向图中讨论强连通性。

7)生成树与生成森林

连通图的生成树是包含图中全部顶点的一个极小连通子图。若图中顶点数为 n,则它的生成树含有 n-1 条边。包含图中全部顶点的极小连通子图,只有生成树满足这个极小条件,对生成树而言,若砍去它的一条边,则会变成非连通图,若加上一条边则会形成一个回路。

在非连通图中,连通分量的生成树构成了非连通图的生成森林

区分极大连通子图极小连通子图。极大连通子图是无向图的连通分量,极大即要求该连通子图包含其所有的边; 极小连通子图是既要保持图连通又要使得边数最少的子图。

8)顶点的度、入度和出度

在无向图中,顶点 v 的度是指依附于顶点 v 的边的条数,记为TD(v) 。无向图的全部顶点的度的和等于边数的 2 倍,因为每条边和两个顶点相关联。

在有向图中,顶点 v 的度分为入度和出度,入度是以顶点 v 为终点的有向边的数目,记为 ID(v);而出度是以顶点 v 为起点的有向边的数目,记为 OD(v) 。顶点 v 的度等于其入度与出度之和,即 TD(v) = ID(v) + OD(v) 。有向图的全部顶点的入度之和与出度之和相等,并且等于边数,这是因为每条有向边都有一个起点和终点。

9)边的权和网

在一个图中,每条边都可以标上具有某种含义的数值,该数值称为该边的权值。这种边上带有权值的图称为带权图,也称

10)稠密图与稀疏图

边数很少的图称为稀疏图,反之称为稠密图。稀疏和稠密本身是模糊的概念,稀疏图和稠密图常常是相对而言的。一般当图 G 满足 |E| <|V|log|V| 时,可以将 G 视为稀疏图。

11)路径、路径长度和回路

顶点 vp 到顶点 vq 之间的一条路径是指顶点序列 vp, vi1, vi2, …, vim, vq,当然关联的边也可理解为路径的构成要素。路径上边的数目称为路径长度。第一个顶点和最后一个顶点相同的路径称为回路或环。若一个图有 n 个顶点,并且有大于 n - 1 条边,则此图一定有环。

12)简单路径与简单回路

在路径序列中,顶点不重复出现的路径称为简单路径。除第一个顶点和最后一个顶点外,其余顶点不重复出现的回路称为简单回路

13)距离

从顶点 u 出发到顶点 v 的最短路径若存在,则此路径的长度称为从 u 到 v 的距离。若从 u 到 v 根本不存在路径,则记该距离为无穷(∞)。

14)有向树

一个顶点的入度为 0 、其余顶点的入度均为 1 的有向图,称为有向树

2. 有关图性质的例题

① 【2009 统考真题】下列关于无向连通图特性的叙述中,正确的是( A )。
I. 所有顶点的度之和为偶数
II. 边数大于顶点个数减 1
III. 至少有一个顶点的度为 1
A. 只有 I
B. 只有 II
C. I 和 II
D. I 和 III

② 【2010 统考真题】若无向图 G = (V, E) 中含有 7 个顶点,要保证图 G 在任何情况下都是连通的,则需要的边数最少是( C )。
A. 6
B. 15
C. 16
D. 21

③【2017 统考真题】已知无向图 G 含有 16 条边,其中度为 4 的顶点个数为 3,,度为 3 的顶点个数为 4,其他顶点的度均小于 3。图 G 所含的顶点个数至少是( B )。
A. 10
B. 11
C. 13
D. 15

④ 【2022 统考真题】对于无向图 G = (V, E), 下列选项中,正确的是( D )。
A. 当 |V| > |E| 时,G 一定是连通的
B. 当 |V| < |E| 时,G 一定是连通的
C. 当 |V| = |E| - 1 时,G 一定是不连通的
D. 当 |V| > |E| + 1 时,G 一定是不连通的

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

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

相关文章

pr涂鸦转场(喷漆涂鸦效果视频转场过渡效果)mogrt模板

https://prmuban.com/40353.html 主要特点&#xff1a; 与Adobe Premiere Pro 2024兼容 4K分辨率&#xff08;38402160&#xff09; 自动调整大小功能 快速渲染时间 无需额外插件 包括视频教程

240806-在Linux/RHEL开机中自动启动bash脚本

A. 常规方法 要在Red Hat Enterprise Linux (RHEL) 中设置开机启动的bash脚本&#xff0c;可以使用以下方法之一&#xff1a; 方法1&#xff1a;使用/etc/rc.d/rc.local 打开/etc/rc.d/rc.local文件&#xff1a; sudo vi /etc/rc.d/rc.local在文件末尾添加你想要执行的bash脚…

<Qt> 窗口

目录 一、Qt窗口 二、菜单栏 &#xff08;一&#xff09;创建菜单栏 &#xff08;二&#xff09;在菜单栏中添加菜单 &#xff08;三&#xff09;创建菜单项 &#xff08;四&#xff09;在菜单项之间添加分割线 &#xff08;五&#xff09;给菜单项添加槽函数 &#xf…

虚拟机和docker容器的区别

背景 我们知道虚拟机和docker容器中的进程都可以在独立的空间中运行&#xff0c;互不干扰&#xff0c;那么两者主要区别是什么呢 虚拟机和docker容器的区别 虚拟机主要是通过硬件模拟出来一个个操作系统&#xff0c;每个操作系统有自己的的文件和目录&#xff0c;网络设备等…

最新HTML设计搜索表单

设计搜索表单 页眉中包含表单&#xff0c;表单中只需包含label和Input. 实现如下效果&#xff1a;文本框动态变宽效果 代码&#xff1a;6.2.4.设计搜索表单.html <!DOCTYPE html> <html><head><meta charset"utf-8"><title></t…

第R2周:Tensorflow2实现:LSTM-火灾温度预测

本文为365天深度学习训练营 中的学习记录博客原作者&#xff1a;K同学啊 任务说明&#xff1a;数据集中提供了火灾温度&#xff08;Tem1&#xff09;、一氧化碳浓度&#xff08;CO 1&#xff09;、烟雾浓度&#xff08;Soot 1&#xff09;随着时间变化数据&#xff0c;我们需要…

Flip PDF Plus Corporate v7.1.25 激活版下载及安装步骤 (PDF电子书翻页)

前言 Flip PDF Plus Corporate 是一款功能强大的PDF翻页工具&#xff0c;也被称为名编辑电子杂志大师。它能够快速将PDF文件转换成具有翻页动画效果的电子书&#xff0c;同时保留原始的超链接和书签。该工具支持将相册、视频、音频、Flash、YouTube视频和链接等内容完全嵌入到…

OpenGL入门一:基础知识及概念

1、什么是OpenGL OpenGL&#xff1a;open graphic library&#xff0c;即开发图形库。它被定义为“图形硬件的一种软件接口”。实质上是3D图形和模型库&#xff0c;它具有高度可移植性&#xff0c;并且具有非常快的速度。可以创建优雅漂亮的3D图形&#xff0c;具有出色的视觉质…

vue3实现video视频+弹幕评论

vue3实现视频加评论 之前写了一篇博客使用了弹幕插件http://t.csdnimg.cn/616mlvue3 使用弹幕插件&#xff0c;今天对这个页面进行了升级 变成了 vue3使用video 这个没有使用插件&#xff0c;昨天看了好多&#xff0c;没发现有用的插件&#xff0c;下载了几个都没办法使用就用…

Linux C++ 多线程编程

Linux C 多线程编程 参考教程&#xff1a; c&#xff1a;互斥锁/多线程的创建和unique_lock&#xff1c;mutex&#xff1e;的使用_mutex 头文件 vcCSDN博客 1. 编写unique_mutex 1.1 创建文件夹 通过终端创建一个名为unique_mutex的文件夹以保存我们的VSCode项目&#xff…

基于HTML弹性布局做的支付宝界面

里面有一些语言图标&#xff0c;想用的可以去iconfont-阿里巴巴矢量图标库里面寻找&#xff0c;这类图标跟文字一样可以设置大小、文本居中之类的&#xff0c;并不算严格意义上的图片&#xff0c;废话不多说&#xff0c;直接上成果和代码 <!DOCTYPE html> <html lang&…

C语言程序设计-[14] 循环结构的一些应用(续)

1、求n! 。 对于这个问题&#xff0c;首先分析四个要素如下&#xff1a; 循环初始化条件&#xff1a;i1; fact1; //n!1*2*3*...*n&#xff0c;从这个问题来看&#xff0c;首先需要乘起来的数有n个&#xff0c;第一个即i1&#xff0c;然后需要fact来存储乘起来的数(初始时fac…

SpringBoot下载resources目录下的文件

1.引入SpringBoot和hutool依赖 <dependency><groupId>cn.hutool</groupId><artifactId>hutool-all</artifactId><version>5.8.22</version></dependency>2.在项目resources目录下放入模版文件&#xff0c;结构如下&#xff1a…

【学习笔记】解决在声音输出中找不到蓝牙耳机设备的问题

【学习笔记】在声音输出中找不到蓝牙耳机设备 在使用蓝牙耳机的时候&#xff0c;遇见一个问题&#xff0c;就是在电脑在连接蓝牙耳机之后&#xff0c;在声音输出中找不到蓝牙耳机设备&#xff0c;只能使用扬声器播放声音。电脑使用的是Windows 11系统。后来在网上寻找解决方案…

使用MAC电脑、iPhone 真机调试 H5页面

使用MAC电脑、iPhone 真机调试 H5页面 简介Safari 浏览器设置iPhone 手机设置开始调试 简介 为方便在 H5开发过程中在真实手机调试 H5页面&#xff0c;可进行一下设置 Safari 浏览器设置 在 Mac 电脑打开浏览器后&#xff0c;点左上角的" Safari 浏览器" -> “设…

LVS详细配置

目录 LVS简介 LVS集群体系结构 LVS相关术语 lvs集群的类型 1、NAT模式 NAT简介 NAT模式数据逻辑 2、DR模式 DR模式简介 DR模式数据逻辑 DR模式的特点 3、TUN模式 TUN模式简介 TUN模式数据传输过程 TUN模式特点 4、fullnet模式 LVS模式总结 LVS调度算法 LVS静…

每天五分钟深度学习pytorch:训练神经网络模型的基本步骤

本文重点 本文个人认为是本专栏最重要的章节内容之一,前面我们学习了pytorch中的基本数据tensor,后面我们就将学学习深度学习模型的内容了,在学习之前,我们先来看一下我们使用pytorch框架训练神经网络模型的基本步骤,然后我们下面就将这些步骤分解开来,详细学习。 代码…

力扣第45题:跳跃游戏 贪心DP(C++)

给定一个长度为 n 的 0 索引整数数组 nums。初始位置为 nums[0]。 每个元素 nums[i] 表示从索引 i 向前跳转的最大长度。换句话说&#xff0c;如果你在 nums[i] 处&#xff0c;你可以跳转到任意 nums[i j] 处: 0 < j < nums[i] i j < n 返回到达 nums[n - 1] 的最…

途博V16 g110m,g120,g120c,g120d未安装(已解决)

官网下载驱动并安装就行&#xff0c;安装流程和安装软件本体的流程一样&#xff0c; 驱动下载地址&#xff1a; SIOS 安装流程参考&#xff1a;博途V16软件官方下载和安装_博途软件怎么从官网下载-CSDN博客

Python之布尔(逻辑)运算符:and、or、not

这是《Python入门经典以解决计算问题为导向的Python编程实践》65-73页的内容&#xff0c;是对上一篇内容的补充&#xff0c;主要讲了布尔运算符。 深入控制语句 1、布尔变量2、关系运算符3、布尔运算符&#xff08;逻辑运算符&#xff09;4、优先级自测练习 1、布尔变量 布尔…