图的BFS和DFS

BFS

图在BFS时,我们从第一个要搜索的节点出发,依次找相邻的节点遍历,遍历过的节点则标记1即可,因为图存在回路,所以我们在遍历时可能会遍历到已经遍历过的节点在这里插入图片描述
bool visited[Maxsize];来表示标记数组,初始为false,访问过为true
在这里插入图片描述
在这里插入图片描述
如果用邻接矩阵存储,则对应的BFS都是按照顺序的,因为邻接矩阵有顺序,如果是邻接表,则有可能不是按照顺序,而是按照表的指针来存在这里插入图片描述
在这里插入图片描述
但是上述代码如果是非连通图,则无法实现在这里插入图片描述
所以我们对于每个没被访问过的顶点都进行BFS
所以,对于无向图来说,BFS调用次数为连通分量数
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
广度优先生成树的BFS实际上就是树的层次遍历在这里插入图片描述
在这里插入图片描述
即对两个图进行广度优先生成树的生成

DFS

图的DFS和树的先根遍历很像,先从根节点出发,若一个节点有子树,则不断访问他的子树的节点进行递归,否则就返回上一层找他的另一个儿子递归,再没有就继续返回上一层,依次类推
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
根据邻接矩阵求DFS遍历序列:先自己定义开始的节点是哪一个,然后找那个节点对应的行,若某个节点值为1,且没有被访问过,则在遍历序列那边写上其节点,并且跳到那个节点对应的序列进行递归即可在这里插入图片描述
在这里插入图片描述
深度优先生成树:根据DFS画出来即可,生成森林也差不多在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值