概念和结构
- 图是由顶点和连接顶点的边构成的,通常将数据元素称为顶点,顶点之间的关系称为边。
- 图分为两种,一种是有向图,另一种是无向图。
- 图常用的表示方法有两种,一种是邻接矩阵,另一种是邻接表。因为邻接矩阵会占用更多的内存,而且进行添加和删除操作会很麻烦,所以这里我们实现邻接表。
- 我们这里实现无向图。
无向图的操作
无向图有六种常用操作,分别为
- 添加顶点 addVertex(v)
- 添加边 addEdge(a,b)
- 打印邻接表 print()
- 广度优先遍历 bfs(v,callback)
- 获取最短路径 shortestPath(from,to)
- 深度优先遍历 dfs(v,callback)
JS实现无向图
JS里面的树结构需要通过对象(object)和数组(array)来实现,其中,对象用来存放边,数组用来存放顶点。
var Graph = function(){
//存储顶点
var vertexes = [];
//存储边
var edges = {};
//添加顶点