当前位置:网站首页>图的深度优先遍历
图的深度优先遍历
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
边栏推荐
- Ardiuno智能电蚊拍
- 樹莓派 + AWS IoT Greengrass
- About vs scanf, 'scanf' appears: this function or variable may be unsafe Solutions to the problem of consumer usi
- 微服务之consul
- Byte order problem
- Multi type study of Worthington collagen protease
- 如何制定一个可实现的年度目标?
- Raspberry pie + AWS IOT introductory experiment
- 【无标题】vsbiji esp....32
- Ndk20b ffmpeg4.2.2 compilation and integration
猜你喜欢
随机推荐
Prompt to update to the latest debug version during vscode debugging
宁要一个完成,不要千万个开始(转载自豆瓣)
Shell learning record (I)
将lua print输出到cocos2d控制台输出窗口中
Theoretical speed calculation method of WiFi
缓存技术之第一次亲密接触
vscode调试时提示更新到最新调试版本
shell学习记录(二)
Getting to know OpenGL
Codecraft-17 and Codeforces Round #391 (Div. 1 + Div. 2, combined) C. Felicity is Coming!
FPGA实现图像二值形态学滤波——腐蚀膨胀
SDRAM Controller - add read / write FIFO
Pointnet/pointnet++ learning
高手常用的电脑快捷键
cv==biaoding---open----cv001
shell学习记录(一)
Agent challenge - "Olympic running"
OA process editing
购买了fastadmin小程序助手但是问题工单中无法发布工单
How to set an achievable annual goal?