数据结构 图的遍历

1. 图的遍历
从图中的某个顶点出发,按某方法多图中的所有结点访问且访问一次。
2. 图的复杂性
顶点关系任意、多对多的关系、连通图与非连通图、孤立结点、回路。
3. 访问标识数组visited[n]
为每一个顶点设置一个一个访问标识visited[i] ,初值设为0表示未访问,一旦访问则设为1表示已访问。
4. 遍历方法:深度优先搜索、广度优先搜索

深度优先搜索(DFS)

深度优先搜索(DFS):类似树的先根遍历
(1) 基本思想
选择一个顶点作为起始点,首先访问该顶点。
依次以该顶点的邻接点作为出发点,深度优先搜索邻接点。
对于非连通图,再选一个未搜索过的顶点作为起始点,重复进行。
举例:
在这里插入图片描述
按先左后右的深度优先搜索结果为:
A,B,C,F,D,G,E,H,I
在这里插入图片描述
按先右后左的深度优先搜索结果为:
A,E,G,H,I,D,B,C,F
(2) 深度优先搜索连通子图的递归算法
① 访问出发点v0,并置访问标识;
② 依次深度优先遍历v0的邻接点。
邻接表存储事例
在这里插入图片描述
(3) 深度优先搜索连通子图的非递归算法
① 首先将v0入栈;
② 只要栈不为空:
处理栈顶:栈顶顶点出栈,如果未访问,则访问并置访问标识;
处理邻近点:然后将该顶点所有未访问的邻接点入栈。

广度优先搜索(BFS)

广度优先搜索(BFS):类似树的层次遍历

(1) 基本思想
从图中某个顶点v0出发,首先访问v0。
依次访问v0的各个未被访问的邻接点。
依次以v0的各个未被访问的邻接点为出发点,广度优先搜索。
对于非连通图,再选一个未搜索过的顶点作为起始点,重复进行。
举例:
在这里插入图片描述
在这里插入图片描述
(2) 广度优先搜索连通子图的算法思想
① 首先访问v0并置访问标识,然后将v0入队;
② 只要队不为空,则重复下述处理:
a.队头结点v出队;
b.对v的所有邻接点w,如果w未访问,则访问w并置访问标识,然后将w入队。
举例:
在这里插入图片描述
欢迎大家加我微信交流讨论(请备注csdn上添加)
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程子的小段

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值