【课件】数据结构第6章图ppt

合集下载

云大《数据结构》课程教学课件-第6章 树和二叉树(147P)_OK

云大《数据结构》课程教学课件-第6章 树和二叉树(147P)_OK

^d ^ ^ e ^ 三叉链表
3)二叉链表是二叉树最常用的存储结构。还有其它链接方 法,采用何种方法,主要取决于所要实施的各种运算频度。
例:若经常要在二叉树中寻找某结点的双亲时,可在每个结 点上再加一个指向其双亲的指针域parent,称为三叉链表。
lchild data parent rchild
2021/8/16
2021/8/16
9
6.2 二 叉 树
6.2.1 二叉树的概念
一、二叉树的定义: 二叉树(Binary Tree)是n(n>=0)个结点的有限集,它或者是 空集(n=0)或者由一个根结点和两棵互不相交的,分别称 为根的左子树和右子树的二叉树组成。 可以看出,二叉树的定义和树的定义一样,均为递归定 义。
A
集合3
集合1
BCD
EF
G
集合2
2021/8/16
3
2、树的表示方法 1)树形图法
A
BCD
EF
G
2)嵌套集合法
3)广义表形式 ( A(B, C(E,F), D(G) )
4)凹入表示法
2021/8/16
A B
D
CG
EF
A B C E DF G
4
3、 树结构的基本术语
1)结点的度(Degree):为该结点的子树的个数。 2)树的度:为该树中结点的最大度数。
7)路径(Path):若树中存在一个结点序列k1,k2,…,kj,使得ki是 ki+1的双亲(1<=i<j),则称该结点序列是从ki到kj一条路径 (Path)
路径长度:路径的长度为j-1,其为该路径所经过的边的数 目。
A
BCD
EF
G

数据结构第6章树和二叉树3树和森林ppt课件

数据结构第6章树和二叉树3树和森林ppt课件

§6.4 树和森林 ❖树的存储结构——孩子兄弟表示法
这种存储结构便于实现各种树的操作。首先易于 实现找结点孩子等的操作。如果为每个结点增设一个 (parent)域,则同样能方便地实现Parent(T, x)操作。
§6.4 树和森林
❖森林和二叉树的转换
1. 树和二叉树的对应关系 由于二叉树和树都可用二叉链表作为存储结构,
R AB C
DE
F
GHK
R^
A
^D
^B
^E ^
C^
F^
^G
^H
^K ^
§6.4 树和森林
❖树的二叉链表(孩子 - 兄弟)存储表示
typedef struct CSNode { Elem data; struct CSNode *firstchild , *nextsibling;
} CSNode, *CSTree;
A BC D E F GH
A BC D
E F GH A
BC D
1)在兄弟之间加一条连线; 2)对每个结点,除了左孩子外,去除其与其余孩子之间的联系; 3)以根结点为轴心,将整个树顺时针转45°。
Ia
A B
Ib
E F
d
C D
G H I
c E F G H I
§6.4 树和森林
❖森林和二叉树的转换
2. 森林和二叉树的对应关系 从树的二叉链表表示的定义可知,任何一棵
§6.4 树和森林
3
6^
5^
0
1
7
8
2^ 9^
R AB C
DE
F
GHK
§6.4 树和森林 ❖树的存储结构——孩子兄弟表示法
或称二叉树表示法,或称二叉链表表示法。即以 二叉链表作树的存储结构。链表中结点的两个链域分 别指向该结点的第一个孩子结点和下一个兄弟结点。

数据结构——用C语言描述(第3版)教学课件第6章 树与二叉树

数据结构——用C语言描述(第3版)教学课件第6章 树与二叉树

6.2 二叉树 6.2.1 二叉树的定义与基本操作 6.2.2 二叉树的性质 6.2.3 二叉树的存储结构
6.2.1 二叉树的定义与基本操作 定义:我们把满足以下两个条件的树型结构叫做二 叉树(Binary Tree): (1)每个结点的度都不大于2; (2)每个结点的孩子结点次序不能任意颠倒。
有序树:在树T中,如果各子树Ti之间是有先后次序的,则称为有序树。 森林:m(m≥0)棵互不相交的树的集合。将一棵非空树的根结点删去,树就变成一 个森林;反之,给森林增加一个统一的根结点,森林就变成一棵树。
同构:对两棵树,通过对结点适当地重命名,就可以使两棵树完全相等(结点对应相 等,对应结点的相关关系也像等),则称这两棵树同构。
二叉树的基本结构由根结点、左子树和右子树组成
如图示
LChild Data RChild
Data
LChild RChild
用L、D、R分别表示遍历左子树、访问根结点、遍 历右子树,那么对二叉树的遍历顺序就可以有:
(1) 访问根,遍历左子树,遍历右子树(记做DLR)。 (2) 访问根,遍历右子树,遍历左子树(记做DRL)。 (3) 遍历左子树,访问根,遍历右子树(记做LDR)。 (4) 遍历左子树,遍历右子树,访问根 (记做LRD)。 (5) 遍历右子树,访问根,遍历左子树 (记做RDL)。 (6) 遍历右子树,遍历左子树,访问根 (记做RLD)。
(8) NextSibling(Tree,x): 树Tree存在,x是Tree中的某个结点。若x不 是其双亲的最后一个孩子结点,则返回x后面的下一个兄弟结点,否则 返回“空”。
基本操作:
(9) InsertChild(Tree,p,Child): 树Tree存在,p指向Tree 中某个结点,非空树Child与Tree不相交。将Child插入Tree中, 做p所指向结点的子树。

《数据结构与算法项目化教程》课件第6章

《数据结构与算法项目化教程》课件第6章

为G=(V, E),V是顶点A的有限集合,E是边的有限集合,即
V={A|A∈某个数据集合}, E={(A, B)|A, B∈V}

E={<A, B> |A, B∈V 且 path(A, B)}
其中,path(A, B)表示从顶点A到B的一条通路。
学习情境6 图
2.图的类型 (1) 无向图。 无向图(undirected graph)中的边没有方向,每条边用两个 顶点的无序对表示,如(A, B)表示连接顶点A和B之间的一条 边,(A, B)和(B, A)表示同一条边。图6-1是一个无向图,用G 表示无向图,其顶点集合V为
V(G)={A,B,C,D,E} E(G)={<A,B>,<A,D>,<A,E>,<B,C>,<C,B>,<C,D>,<D,B> ,<D,E>,<E,A>}
学习情境6 图
图6-2 有向图
学习情境6 图
(3) 自身环的图和多重图。 如图6-3所示,顶点C有一个路径指向自身,这种图称为 带自身环的图;顶点B有两条路径到顶点A,这种图属于多重 图。这些一般不属于数据结构讨论的范畴,本学习情境只讨 论无向图和有向图。 (4) 完全图。 完全图(complete graph)的任一顶点均有路径到其他顶点。 完全图的边数是最大的。无向完全图的边数有n × (n-1)/2,有 向完全图的边数为n × (n-1)。
学习情境6 图
图6-13 邻接表元素
学习情境6 图
图6-14 带权无向图的邻接表表示
学习情境6 图
3.有向图的邻接表表示 以邻接表表示有向图,需要根据边的方向而得到边表, 边表有两种:出边表和入边表。 出边表:第i行单链表存储以顶点vi为起点的所有边<vi, vj>,dest域是该条边的终点vj在顶点表中的下标。 入边表:第i行单链表存储以顶点vi为终点的所有边<vj, vi>,dest域是该条边的起点vj在顶点表中的下标。 有向图的邻接表表示有两种,分别是由出边表构成的邻 接表和由入边表构成的逆邻接表。带权有向图邻接表的出边 表表示如图6-15所示。在有向图的邻接表或逆邻接表中,每 条边只存储一次。

数据结构课件CH6

数据结构课件CH6
树是一类重要的非线性数据结构,是以分支关系 定义的层次结构。
§6.1 树的定义
定义:
树(tree)是n(n>0)个结点的有限集T,其中: 有且仅有一个特定的结点,称为树的根(root) 当n>1时,其余结点可分为m(m>0)个互不相交的有 限集T1,T2,……Tm,其中每一个集合本身又是一棵树, 称为根的子树(subtree)
• 每个结点至多有二棵子树(即不存在度大于2的结点) • 二叉树的子树有左、右之分,且其次序不能任意颠倒
★ 基本形态

A
A
A
A
只有根结 空二叉树 点的二叉树
B 右子树为空
B
B
C
左子树为空
左、右子 树均非空
二叉树的基本运算
① 构造一棵二叉树 CreateBTree ( BT) ② 清空以BT为根的二叉树 ClearBTree(BT) ③ 判断二叉树是否为空 BTreeEmpty(BT) ④ 获取给定结点的左孩子和右孩子
遍历的过程就是把非线性结构的二叉树中的结点排 成一个线性序列的过程。
二叉树遍历方法可分为两大类,一类是“宽度优先 ”法,即从根结点开始,由上到下,从左往右一层一层 的遍历;另一类是“深度优先法”,即一棵子树一棵子 树的遍历。
按根、左子树和右子树三部分进行遍历
• 方法
★ 先序遍历:先访问根结点,然后分别先序遍历左子树、 右子树
★ 特点:
» 叶子结点只可能在层次最大的两层上出现; » 对任一结点,若其右分支下子孙的最大层次为L,则
其左分支下子孙的最大层次必为L或L+1。
1
2
3
4
5
6
7
8 9 10 11 12 13 14 15
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

6.1 图的逻辑结构
V1 V3
V4 V1
V3
V2 若顶点vi和vj之间的边没有方向,则 称这条边为无向边,表示为(vi,vj)。 如果图的任意两个顶点之间的边都
V5 是无向边,则称该图为无向图。
V2 若从顶点vi到vj的边有方向,则称这 条边为有向边,表示为<vi,vj>。 如果图的任意两个顶点之间的边都
第6章 图
本章的主要内容是:
图的逻辑结构 图的存储结构及实现 图的连通性 最小生成树 最短路径 AOV网与拓扑排序 AOE网与关键路径
2019/10/26
第6章 图
图是一种非常复杂的非线性结构,并且具有极强的表达能力, 现实世界中的许多问题都可以抽象为图结构。本章是本课程 的难点和重点。通过本章的学习,要求学生:
i =1
V1
V2
V3
V4
V5
在具有n个顶点、e条边的无向图G中,各顶点 的度之和与边数之和的关系?
6.1 图的逻辑结构
图的基本术语
V1
V2
n
n
ID(vi ) = OD(vi ) = e
i=1
i=1
V3
V4
在具有n个顶点、e条边的有向图G中,各顶点 的入度之和与各顶点的出度之和的关系?与边 数之和的关系?
A
B
C
D
E
F
线性结构
A
V1
V2
B
C
V3
D
EF
V4
V5
树结构
图结构
在线性结构中,元素之间的关系为前驱和后继; 在树结构中,结点之间的关系为双亲和孩子; 在图结构中,顶点之间的关系为邻接。
6.1 图的逻辑结构
图的基本术语
无向完全图:在无向图中,如果任意两个顶点之间 都存在边,则称该图为无向完全图。
有向完全图:在有向图中,如果任意两个顶点之间都 存在方向相反的两条弧,则称该图为有向完全图。
哥尼斯堡七桥问题
能否从某个地方出发,穿过所有的桥仅一次 后再回到出发点?
哥尼斯堡七桥问题
七拉回路的判定规则: 1.如果通奇数桥的地方多于 两个,则不存在欧拉回路; 2.如果只有两个地方通奇数 桥,可以从这两个地方之一 出发,找到欧拉回路; 3.如果没有一个地方是通奇 数桥的,则无论从哪里出发, 都能找到欧拉回路。
V1
V2
V1
V2
V3
V4
V3
6.1 图的逻辑结构
含有n个顶点的无向完全图有多少条边? 含有n个顶点的有向完全图有多少条弧?
V1
V2
V1
V2
V3
V4
V3
含有n个顶点的无向完全图有n×(n-1)/2条边。 含有n个顶点的有向完全图有n×(n-1)条边。
6.1 图的逻辑结构
图的基本术语
稀疏图:称边数很少的图为稀疏图; 稠密图:称边数很多的图为稠密图。
无向图中,对于任意两个顶点vi和顶点vj,若存在边 (vi,vj),则称顶点vi和顶点vj互为邻接点,同时称边 (vi,vj)依附于顶点vi和顶点vj。
V1的邻接点: V2 、V4 V2的邻接点: V1 、V3 、V5
V1
V2
V3
V4
V5
6.1 图的逻辑结构
图的基本术语
邻接、依附
有向图中,对于任意两个顶点vi和顶点vj,若存在弧 <vi,vj>,则称顶点vi邻接到顶点vj,顶点vj邻接自顶 点vi,同时称弧<vi,vj>依附于顶点vi和顶点vj 。
V4 是有向边,则称该图为有向图。
6.1 图的逻辑结构
图的基本术语
简单图:在图中,若不存在顶点到其自身的边,且同 一条边不重复出现。
V1
V2 V1
V2 V1
V2
V3
V3
V3
V4
V5 V4
V5 V4
V5
非简单图
非简单图
简单图
数据结构中讨论的都是简单图。
6.1 图的逻辑结构
图的基本术语
邻接、依附
V1
V2
V1的邻接点: V2 、V3
V3的邻接点: V4
V3
V4
不同结构中逻辑关系的对比
A
B
C
D
E
F
线性结构
A
V1
V2
B
C
V3
D
EF
V4
V5
树结构
图结构
在线性结构中,数据元素之间仅具有线性关系; 在树结构中,结点之间具有层次关系; 在图结构中,任意两个顶点之间都可能有关系。
不同结构中逻辑关系的对比
顶点的度:在无向图中,顶点v的度是指依附于该顶 点的边数,通常记为TD (v)。 顶点的入度:在有向图中,顶点v的入度是指以该顶 点为弧头的弧的数目,记为ID (v); 顶点的出度:在有向图中,顶点v的出度是指以该顶 点为弧尾的弧的数目,记为OD (v)。
6.1 图的逻辑结构
图的基本术语
n
TD (vi ) = 2e
•掌握图的定义及其基本术语; •理解图的抽象数据类型定义; •掌握图的邻接矩阵和邻接表存储; •掌握图的遍历方法及其在邻接矩阵和邻接表存储结构上的实现; •理解图的十字链表、邻接多重表和边集数组存储方法; •理解无向图的连通性; •了解有向图的连通性; •掌握Prim算法和Kruskal算法的基本思想和求解过程; •理解Prim算法和Kruskal算法的C++描述; •掌握Dijkstra算法和Floyd算法的基本思想及求解过程; •理解Dijkstra算法和Floyd算法的C++描述; •掌握拓扑序列的定义及拓扑排序算法; •掌握关键路径的定义及求解过程; •理解求关键路径算法。
图论——欧拉
欧拉1707年出生在瑞士的巴塞尔城,19岁开始发 表论文,直到76岁。几乎每一个数学领域都可以 看到欧拉的名字,从初等几何的欧拉线,多面体 的欧拉定理,立体解析几何的欧拉变换公式,四 次方程的欧拉解法到数论中的欧拉函数,微分方 程的欧拉方程,级数论的欧拉常数,变分学的欧 拉方程,复变函数的欧拉公式等等。据统计他那 不倦的一生,共写下了886本书籍和论文,其中 分析、代数、数论占40%,几何占18%,物理和 力学占28%,天文学占11%,弹道学、航海学、 建筑学等占3%。 1733年,年仅26岁的欧拉担任 了彼得堡科学院数学教授。1741年到柏林担任科 学院物理数学所所长,直到1766年,重回彼得堡, 没有多久,完全失明。欧拉在数学上的建树很多, 对著名的哥尼斯堡七桥问题的解答开创了图论的 研究。
6.1 图的逻辑结构
图的定义
图是由顶点的有穷非空集合和顶点之间边的集合组 成,通常表示为:
G=(V,E) 其中:G表示一个图,V是图G中顶点的集合,E是 图G中顶点之间边的集合。 在线性表中,元素个数可以为零,称为空表; 在树中,结点个数可以为零,称为空树; 在图中,顶点个数不能为零,但可以没有边。
相关文档
最新文档