本篇博文旨在介绍数据结构中的图;介绍了图以及图的有关概念;介绍了图的两种实现方式,并用代码进行了实现;介绍并实现了图的广度优先遍历和深度优先遍历;
图
图是数据结构中的一种非线性结构,由顶点以及顶点相连的边构成
图包括有向图和无向图
无向图中,当两个顶点存在连接关系时,不区分该连接是A到B点,还是B到A点
有向图中,两个顶点存在连接关系时,要区分是A可以到B,还是B可以到A
图的基本概念
完全图
图中,每个顶点都与其他顶点有连线,有N*(N-1)/2条边
权重
若图中的边具有数值信息,那么该数值就为该边的权重
临接顶点
一条边的两个顶点互为邻接顶点
度
一个顶点具有相邻边的个数
路径
图中的一个顶点A,通过其他顶点(x1,x2,x3....)到达一个顶点B后,这中间经过的顶点就为A顶点B顶点之间的路径
连通图和强连通图
在无向图中,当一个顶点A可以通过其他顶点到达顶点B时,A,B两个顶点就互为连通
如果一个图中的所有顶点都是连通的,那么该无向图称为连通图
在有向图中,若每一对顶点都存在路径,则称此图为强连通图
生成树
一个无向连通图的生成树是它的极小连通子图,若图中有N-1个顶点,那么该图的生成树有N-1个顶点
图的两种存储方式
邻接矩阵
将所有顶点的信息组成顶点表, 利用二维矩阵来表示图中的连通关系