Android版数据结构与算法(十一):图的基础以及遍历代码实现

本文介绍了图的定义、术语,包括无向图、有向图、连通图等,并探讨了图的邻接矩阵存储方式。详细讲解了如何用Java实现图的创建、获取顶点权值、出入度以及邻接点的方法。接着阐述了图的深度优先和广度优先遍历,提供了相应的代码实现。
摘要由CSDN通过智能技术生成

本篇目录

一、图定义

图是一种较线性表和树更为复杂的数据结构,其定义为:

图是由顶点的有穷非空集合与顶点之间边的集合构成,通常表示为:G(V, E), G表示一个图,V表示图中顶点的集合,E表示顶点之间边的集合。

如下,就是一个图:

二、图术语了解

图中数据元素我们称之为顶点,图中任意两个顶点都可能存在关系,顶点之间关系用边来表示。

若两个顶点Vi与Vj之间的边没有方向,则称这条边为无向边, 用(Vi,Vj)表示,注意这里是圆括号

如果图中任意顶点之间都是无向边,则称该图为无向图,在无向图中任意两个顶点之间都存在边,则称该图为无向完全图,上图就是一个无向完全图。

若两个顶点Vi与Vj之间的边有方向,则称这条边为有向边,也称作弧, 用<Vi,Vj>表示,注意这里是尖括号

如果图中任意顶点之间都是有向边,则称该图为有向图,在有向图中任意两个顶点之间都存在方向互为相反的两条弧,则称该图为有向完全图,如下图:

有些图的边或者弧具有与其相关的数字,这种与图或弧相关的数字叫做权值

在无向图中如果两个顶点之间有路径,则称这两个顶点是联通的,如果图中任意两个顶点都是联通的,则称图是连通图

在无向图中顶点的边数叫做顶点的
在有向图中顶点分为出度入度,入度就是指向自己的边数,而出度则相反。

如下图:

A结点:出度为3,入度为1
B结点:出度为1,入度为2

以上讲解了一些图的基本术语,没什么难度,大概了解一下就可以了。

三、图的存储

图的结构比较复杂,任意两个元素都可能产生关系,所以一般存储结构无法满足。

邻接矩阵存储方式

图是由顶点和边(或者弧)组成的,可以单独存储顶点和边,顶点简单,可以用一位数组来存储,但是边呢?边就是两个顶点之间的关系,可以用一个二维数组来存储,这种存储方式就是邻接矩阵存储方式

邻接矩阵存储方式就是用两个数组来存储,一个一维数组,一个二维数组,一维数组用来存储顶点,二维数组用来存储顶点之间的关系,也就是边或者弧。

无向图邻接矩阵存储方式:

如下无向图:

一维数组存储顶点数组:

二维数组存储顶点(边,弧)之间关系:

无向图边之间关系的二维数组用0或者1来填充,如果两个顶点之间直接连通则为1,不直接连通则为0,有个注意点就是直接不是间接连通。比如A与B之间直接连通所以填1,而A与D之间不直接连通则为0.

有向图邻接矩阵存储方式:

如下有向图:

存储顶点的一维数组与上面一样

二维数组存储顶点(边,弧)之间关系:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值