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

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

1. 树的的性质

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

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

常用于求解树结点与度之间关系的有:

① 总结点数= n~0~+ n~1~ + n~2~ + ...+ n~m~;

② 总分支数= 1n~1~ + 2n~2~ + ...+ mn~m~ (度为 m 的结点引出 m 条分支);

③ 总结点数=总分支数 + 1 。

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

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

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

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

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

【说明】为使树的高度最小,在前 h - 1 层中,每层的结点数都要达到最大,前 h - 1 层最多有 (m^h-1^ - 1) / (m - 1) 个结点,前 h 层最多有 (m^h^ - 1) / (m - 1) 个结点。因此 (m^h-1^ - 1) / (m - 1) < n <= (m^h^ - 1) / (m - 1) ,即 h - 1 < log~m~(n × (m - 1) + 1) <= h,解得 h~min~ = ⌈log~m~(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 ,即 n~0~ = n~2~ + 1

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

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

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

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

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

性质2) 和 3) 还可以拓展到 m 叉树的情况,即 m 叉树的第 k 层最多有 m^k-1^ 个结点,高度为 h 的 m 叉树至多有 (m^k^ - 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 所在层次(深度)为 ⌊log~2~i⌋ + 1。

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

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

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

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

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

4. 几种特殊的二叉树

1)满二叉树:一棵高度为 h, 且含有 2^h^- 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. k^2^

D. 2^k^ - 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)路径、路径长度和回路:

顶点 v~p~ 到顶点 v~q~ 之间的一条路径 是指顶点序列 v~p~, v~i1~, v~i2~, ..., v~im~, v~q~,当然关联的边也可理解为路径的构成要素。路径上边的数目称为路径长度 。第一个顶点和最后一个顶点相同的路径称为回路或环。若一个图有 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 一定是不连通的

相关推荐
时光の尘6 小时前
C语言菜鸟入门·关键字·int的用法
c语言·开发语言·数据结构·c++·单片机·链表·c
sjsjs116 小时前
【数据结构-表达式解析】【hard】力扣224. 基本计算器
数据结构·算法·leetcode
手握风云-6 小时前
数据结构(Java版)第一期:时间复杂度和空间复杂度
java·数据结构
坊钰6 小时前
【Java 数据结构】时间和空间复杂度
java·开发语言·数据结构·学习·算法
严文文-Chris6 小时前
【数据结构基本概念】
数据结构
飞升不如收破烂~6 小时前
Redis的String类型和Java中的String类在底层数据结构上有一些异同点
java·数据结构·redis
武昌库里写JAVA6 小时前
一文读懂Redis6的--bigkeys选项源码以及redis-bigkey-online项目介绍
c语言·开发语言·数据结构·算法·二维数组
m0_547486669 小时前
数据结构试选择题及答案1
数据结构
知识鱼丸9 小时前
【数据结构】一图介绍python数据结构
数据结构·python
怀旧66610 小时前
Java List 集合
java·数据结构·后端·list·个人开发