当前位置:网站首页>图的深度优先遍历
图的深度优先遍历
2022-06-26 00:36:00 【chengqiuming】
一 点睛
深度优先搜索是最常见的图搜索方法之一。深度优先搜索沿着一条路径一直搜索下去,在无法搜索时,回退到刚刚访问过的节点。深度优先遍历是按照深度优先搜索方式对图进行遍历的。
深度优先遍历的秘籍:后被访问的节点,其邻接点先被访问。
根据深度优先遍历秘籍,后来者先服务,这可以借助栈实现。递归本身就是使用栈实现的,因此使用递归的方法更方便。
二 算法步骤
1 初始化图中的所有节点都未被访问。
2 从图中的某个节点 v 出发,访问 v 并标记其已被访问。
3 依次检查 v 的所有邻接点 w,如果 w 未被访问,则从 w 出发进行深度优先遍历(递归调用,重复步骤 2~3)。
三 图解
1 初始化所有节点都未被访问,visited[i] = false,i=[1,8]。

2 从节点1出发,标记其已被访问,visited[1] = true。

3 从节点1出发访问邻接点2,然后从2节点出发访问节点4,从节点4出发访问节点5,从节点5出发,没有节点再可访问。

4 回退到刚刚访问过的节点4,节点4也没有未被访问的邻接点,回退到最近访问过的节点2,从节点2出发访问下一个未被访问的邻接点6。

5 从节点6出发访问没有被访问的邻接点,回退到刚刚访问过的节点2,节点2没有被访问的邻接点,回退到最近访问过的节点1。从节点1出发访问下一个未被访问的邻接点3,从节点3出发访问节点7,从节点7出发访问节点8,从节点8出发再没被访问的邻接点。

6 回退到刚刚访问过的节点7,节点7没有未被访问的邻接点,回退到最近访问过的节点3,节点3也没有未被访问过的邻接点,回退到最近访问过的节点1,节点1也没有未被访问的邻接点,遍历结束。
深度优先遍历序列为 1 2 4 5 6 3 7 8
边栏推荐
猜你喜欢

vs2015+PCL1.8.1+qt5.12-----(1)

工作一年闲记

接口测试用例设计

About vs scanf, 'scanf' appears: this function or variable may be unsafe Solutions to the problem of consumer usi

win32

Prompt to update to the latest debug version during vscode debugging

regular expression

树莓派 + AWS IoT 入门实验

Eureka注册信息配置备忘

安装了Visual Studio 2013 Redistributable,mysql还是安装失败
随机推荐
Disruptor (I) sequence
Data analysis - data source, field type, data collection trap
连接投影仪
cv==biaoding---open----cv001
It's better to finish one than start thousands of times (reprinted from Douban)
keda 2.7.1 scaledJob 代码简要分析
将weishi相机图片进行转换
工作一年闲记
shell学习记录(四)
Use of static library and dynamic library
基于邻接表的深度优先遍历
安装了Visual Studio 2013 Redistributable,mysql还是安装失败
Record a weird picture upload problem
基于邻接表的广度优先遍历
A lost note for konjaku beginner
Convert Weishi camera pictures
FPGA实现图像二值形态学滤波——腐蚀膨胀
宁要一个完成,不要千万个开始(转载自豆瓣)
A solution to cross domain problems
The role of xargs