一、图
1.概念:图是一种非线性数据结构
2.图的基本术语:
(1)有向图和无向图
(2)网:弧边上有权值,带权值的图就是网
(3)顶点的度(出度- >指出去;入度 ->指进来)
(4)路径:路径上边的条数定义位该路径的长度
(5)无向完全图:在无向图中,如果任意两个顶点之间都存在边,则称该图为无向完全图。
含有N个顶点的无向完全图有N*(N - 1) / 2条边。
(6)有向完全图:在有向图中,如果任意两个顶点之间都存在方向互为相反的两条弧,
则称该图为有向完全图。含有N个顶点的有向完全图有N*(N - 1) 条边。
3.图的特征
任意的两个元素都可能相关,即图中任一元素可以有若干个直接前驱和直接后继(多对多)
属于网状结构类型
4.图的存储结构-----(邻接矩阵、邻接表)
(1)邻接矩阵 (一维数组+二维数组)
一维数组储存图中的顶点信息
二维数组(邻接矩阵)储存图中的边或者弧的信息
有向:
(2)邻接表(一维数组+链表 或者 链表+链表)
前面存储图中的顶点信息,后面储存图中的边或者弧的信息
无向图:
有向图:把顶点当成弧尾建立的邻接表,得到每个顶点的出度
有向图(逆邻接表):以顶点为弧头的弧,得到每个顶点的入度
网(带权值):
二、图的遍历
深度优先遍历(DFS)
根据右手原则,在没有碰到重复顶点的情况下,分叉路口始终是向右手边走,每路过一个顶点就做一个标记,走过的点之后不会再走了
但是又回归的过程,没有路走了就回归找路,直到回归到起始点
这是一个递归的过程
ABCDEFGH HGFED I DCBA
广度优先遍历(BFS)
A BF CIGE DH