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

news2025/4/8 18:24:13

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

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 。

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.coloradmin.cn/o/1987580.html

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

相关文章

模型 MBTI(性格模型)

系列文章 分享 模型&#xff0c;了解更多&#x1f449; 模型_思维模型目录。探索真我&#xff0c;和谐人际。 1 MBTI性格模型的应用 1.1 跨国公司团队协作改进 ABC公司是一家全球性的科技公司&#xff0c;其研发团队由来自世界各地的工程师和设计师组成。尽管团队成员个个才华…

创意指南丨AR数学沉浸式空间体验

AR学习种类那么多&#xff0c;哪款最吸引你&#xff1f; 星河造梦坊和Unity联手打造的沉浸式空间AR无疑是其中的佼佼者。 这款应用不仅利用AR技术将抽象的数学概念变得生动有趣&#xff0c;还通过互动体验让学习者仿佛置身于一个充满奇幻色彩的数学世界中。 无论是学生还是教…

鸿蒙应用服务开发【自定义通知角标】

自定义通知角标 介绍 本示例主要展示了设定应用的桌面图标角标的功能&#xff0c;使用ohos.notificationManager接口&#xff0c;进行桌面角标的设置&#xff0c;通知的发送&#xff0c;获取等。 效果预览 使用说明 在主界面&#xff0c;可以看到当前应用的所有消息通知&am…

ts-node 报错 ERR_UNKNOWN_FILE_EXTENSION

问题 有个monorepo项目&#xff0c;在最外层一次性打包 3 个项目的脚本已经成功实现&#xff0c;如下&#xff1a; "build:test": "cross-env NODE_ENVtest vite build --mode test && esno ./build/script/postBuild.ts", "build:prod"…

一款基于RBAC模型的开源快速开发平台,支持权限粒度达到列级别,前后端分离,可免费用于商业

前言 在企业级应用开发中&#xff0c;权限管理和系统配置是两个核心问题。传统的开发模式往往面临权限控制不够灵活、系统配置难以管理等挑战。为了解-决这些问题&#xff0c;需要一款能够提供细致权限控制和灵活系统配置的软件。 现有的一些软件虽然提供了基本的权限管理功能…

索尼相机SD卡找不到视频怎么办?提供全面解决方案

在使用索尼相机拍摄美好瞬间时&#xff0c;SD卡作为存储介质&#xff0c;承载着珍贵的视频和照片。然而&#xff0c;有时我们可能会遇到SD卡中视频文件无法找到的问题&#xff0c;这无疑让人倍感焦虑。本文旨在为大家提供一套全面的解决方案&#xff0c;希望帮助大家快速找回丢…

Istio 金丝雀发布

转载&#xff1a;备考ICA-Istio 金丝雀实验4 环境清理 kubectl delete gw/helloworld-gateway vs/helloworld dr/helloworld-destination #测试 kubectl get svc,pods for i in {1..10};do curl $(kubectl get svc helloworld|grep helloworld|awk {print $3":"$5}|a…

谷粒商城实战笔记-138-商城业务-首页-渲染二级三级分类数据

本节的主要内容是在前一节的基础上&#xff0c;提供结构查询出所有的二级、三级分类数据。 一&#xff0c;构造响应体数据结构 后端返回给前端的数据结构是在开发详细设计中应该确定的内容。 分析前端需要的数据结构&#xff0c;后端要将所有一级分类包含的二级和三级分类信…

嵌入式学习之路 14(C语言基础学习——指针)

一、指针基础 指针的概念 地址表示内存单元的编号&#xff0c;也被称为指针。指针既是地址&#xff0c;也是一种专门用于处理地址数据的数据类型。 例如&#xff0c;变量a的地址或者十六进制表示的0x1000都可以视作指针。 指针变量的定义 语法&#xff1a;基类型 * 指针变…

Python面试宝典第28题:合并区间

题目 以数组 intervals 表示若干个区间的集合&#xff0c;其中单个区间为intervals[i] [starti, endi]&#xff0c;且endi大于starti。请合并所有重叠的区间&#xff0c;并返回一个不重叠的区间数组&#xff0c;该数组需恰好覆盖输入中的所有区间。 示例 1&#xff1a; 输入&…

Linux 利用 iostat 和 iotop 进行 IO 分析

目录 一、概述二、iostat1、下载2、常用选项3、/proc/diskstats 文件3、一般使用 三、iostop1、下载2、常用选项3、一般使用 一、概述 在Linux 系统上&#xff0c;iostat 和 iotop 这两个 IO 数据工具非常常用。它们都是性能分析领域中不可缺少的工具性软件。 如果 Linux 系统…

关于Redis的集群面试题

问题一&#xff1a;Redis的多数据库机制&#xff0c;了解多少&#xff1f; Redis支持多个数据库&#xff0c;并且每个数据库是隔离的不能共享&#xff0c;单机下的redis可以支持16个数据库&#xff08;db0~db15&#xff09;;若在Redis Cluster集群架构下&#xff0c;则只有一个…

基于STM32F103的FreeRTOS系列(七)·任务创建·列表的使用超详细解析

目录 1. 列表和列表项 1.1 列表和列表项简介 1.1.1 列表 1.1.2 列表项 1.1.3 迷你列表项 1.1.4 列表与列表项关系图 1.2 列表初始化 1.3 列表项的初始化 1.4 列表项的插入函数 1.5 列表项的末尾插入 1.6 列表项的删除 1.7 列表的遍历 1. 列表和列表项…

Open3D 三维重建-Marching Cubes (行进立方体)

目录 一、概述 1.1原理 1.2实现步骤 1.3应用场景 二、代码实现 2.1关键函数 2.1.1步骤 2.1.2函数代码 2.2完整代码 三、实现效果 3.1原始点云 3.2重建后点云 Open3D点云算法汇总及实战案例汇总的目录地址&#xff1a; Open3D点云算法与点云深度学习案例汇总&#…

基于Flask框架的豆瓣电影实时数据分析可视化系统【自动爬虫、数据库、Pyecharts】

文章目录 有需要本项目的代码或文档以及全部资源&#xff0c;或者部署调试可以私信博主项目介绍数据抓取数据存储可视化前后端交互登陆界面注册界面数据更新后展示每文一语 有需要本项目的代码或文档以及全部资源&#xff0c;或者部署调试可以私信博主 项目介绍 本项目基于Py…

JavaEE: 线程安全问题的解决方案(synchronized)

发生原因 要想解决线程安全问题,那么我们首先得知道线程安全问题为什么会发生. 发生原因: 线程在操作系统中是"随机调度,抢占式执行的"[根本原因].多个线程,同时修改同一个变量修改操作不是"原子"的内存可见性问题指令重排序 解决方案 原因1和2,我们很…

基于YOLOv8的茶叶病变检测系统

基于YOLOv8的茶叶病变检测系统 (价格85) 包含 [Algal Leaf Spot, Brown Blight, Gray Blight, Healthy, Helopeltis, Red Leaf Spot] 6个类 翻译&#xff1a; [藻类叶斑病&#xff0c;褐疫病&#xff0c;灰疫病&#xff0c;健康&#xff0c;茶角盲蝽&#xff0c; 红叶斑…

08.SQL注入-下(超详细!!!)

1、Access注入 1.1 判断是否存在注入漏洞 ?id10 and 11 //不报错 ?id10 and 12 //报错1.2 判断字段数 ?id10 order by 1 ... ?id10 order by 7 //不报错 ?id10 order by 8 //报错 说明有7个字段1.3 猜表名 ?id10 and exists(select * from administrator) …

IP协议解析

我最近开了几个专栏&#xff0c;诚信互三&#xff01; > |||《算法专栏》&#xff1a;&#xff1a;刷题教程来自网站《代码随想录》。||| > |||《C专栏》&#xff1a;&#xff1a;记录我学习C的经历&#xff0c;看完你一定会有收获。||| > |||《Linux专栏》&#xff1…

C语言宏定义的使用

文章目录 &#x1f34a;自我介绍&#x1f34a;宏定义&#x1f34a;宏函数&#x1f34a;嵌入式开发常用do...while(0)&#x1f34a;字符串化运算符 ‘ # ’&#x1f34a;不定参数宏 你的点赞评论就是对博主最大的鼓励 当然喜欢的小伙伴可以&#xff1a;点赞关注评论收藏&#xf…