Java 数据结构与算法之DFS、BFS

在使用BFS和DFS遍历图的时候,一般都会维护一个set或者visit数组,标记被访问过的节点,在遍历时需要判断是否被访问过

一、DFS(深度优先遍历)

DFS采用递归和栈,从起点顶点开始,递归访问其所有邻近节点。

Step1:下图 DFS(1) 访问节点1,Visited标注为T,以1为顶点,准备访问1的邻近节点0

Step2:下图 DFS(0) 访问节点0,Visited标注为T,以0为顶点,遍历0的邻近节点3,3也标注为T,准备访问3的邻近节点7

Step3:下图 DFS(7) 访问节点7,Visited标注为T,以7为顶点,准备访问7的邻近节点5

Step4:下图 DFS(5) 访问节点5,Visited标注为T,以5为顶点,准备访问5的邻近节点3,但是发现3标注为T(已经被访问过),再看5是否有其它邻近节点,如果有,继续访问,如果没有,返回上一级。这里返回上一级节点7

 Step5:返回至节点7

 Step6:同理以7为顶点,看7是否有其它邻近节点,如果有,继续访问,如果没有,返回上一级。这里返回上一级节点3

 Step7:同理以3为顶点,看3是否有其它邻近节点,如果有,继续访问,如果没有,返回上一级。这里返回上一级节点0

 Step8:同理以0为顶点,如果有邻近节点,继续访问,如果没有,返回上一级。这里返回上一级节点(最初的顶点)1 

Step9:同理以1为顶点,看1是否有其它邻近节点,如果有,继续访问,如果没有,返回上一级,这里继续访问1的下个邻近节点2

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值