1)按照边或者顶点个数约束来分类.
零图(Null graph):只有顶点没有边的图;
平凡图(Trivial graph):只有一个顶点的图;
2)按照边是否有方向来分类.
有向图(Directed Graph):在每个边的定义中,节点都是有序的对。也就是(A,B)与(B,A)表示不同的边,一个代表从A到B方向的边,一个代表从B到A方向的边。
无向图(Undirected Graph):边只是代表链接,没有指向性。(A,B)与(B,A)表示的同样的边。
3)按照是否在边上存储权重数据分类.
权重图(Weighted Graph):图中的边上附加了权重或值的图。这些权重表示连接两个节点之间的距离、代价、容量或其他度量。权重可以是任何数值,通常用于描述节点间的关系特性。
"图"数据结构的分类
B)"图"结构的数据存储与表达.1)邻接矩阵(Adjacency Matrix)
以二维数组中的行和列分别代表图中的顶点,矩阵中的元素的值表示各顶点之间是否连接或连接的边的权重。
邻接矩阵(Adjacency Matrix)
优点:方便检查任意一对顶点间是否存在边
方便查找任一顶点的所有“邻接点”
方便计算任一顶点的“度”
缺点: 浪费时间(统计稀疏图中一共有多少边)
浪费空间(点很多,边很少)
2)邻接表(Adjacency List)
首列列表 List 代表图中各个点,图中的每个节点都有一个对应的列表,用于存储与该节点直接相连的其他节点的信息。
邻接表(Adjacency List)
优点:方便查找任一顶点的邻接点
节约稀疏图的空间,需要N个头指针+2E个节点
缺点: 不方面检查任意一对顶点是否存在边
对有向图只能计算出度;需要构造“逆邻接表”来计算入度
C)"图"结构的遍历.1)深度优先遍历。
2)广度优先遍历。