目录
1.1图的定义及分类 142
1.2无向图 143
1.2.1图的相关术语 143
1.2.2无向图的存储结构 144
1.3图的API设计 145
1.4图的搜索 146
1.4.1深度优先搜索 146
1.4.2深度优先搜索API设计 147
1.5广度优先搜素 149
1.5.1广度优先搜索API设计及代码实现 150
1.5.2广度优先搜索测试实现 151
1.6案例---畅通工程实现(是前面合并集的提升)152
1.7路径查找 153
1.7.1路径查找API设计 153
1.7.2路径查找的代码实现 154、155
1.7.3路径查找测试的代码实现 156
1.1图的定义及分类 142
1.2无向图 143
1.2.1图的相关术语 143
子图解释:所有边的子集,并包含这些依附的顶点。
路径解释:从左下角到右上角的路径
环:
1.2.2无向图的存储结构 144
邻接矩阵:
使用树的索引来表示二维数组的索引。
例如:如上图所示,问结点7和结点8之间是否有边。如果两结点之间在上面的二维数组表中的值为1,那么就表示这两个结点之间有边。因为是无向图,所有横7竖8 和横8竖7是一样的。
缺点:处理大规模的问题,需要占据很大的点即内存空间。
邻接表:
存储的都是队列对象。 利用多个Q对象来表示一个树。
顶点的表示:
边的表示:
1.3图的API设计 145
本部分代码在/graph/Graph
1.4图的搜索 146
1.4.1深度优先搜索 146
实质就是:先是纵深进行搜索,纵深搜索完毕后在进行广度的搜索。先深后广
1.4.2深度优先搜索API设计 147
本部分的代码在/graph/DepthFirstSearch中
测试代码在/test/DepthFirstSearchTest 148
1.5广度优先搜素 149
应用:二叉树的层序遍历
1.5.1广度优先搜索API设计及代码实现 150
本部分实现代码在/graph/BreadthFirstSearch
1.5.2广度优先搜索测试实现 151
本部分实现代码在/test/BreadthFirstSearchTest
1.6案例---畅通工程实现(是前面合并集的提升)152
1.7路径查找 153
1.7.1路径查找API设计 153
注:基于深度优先进行搜索路径