图遍历:深度优先算法(DFS)

本文详细介绍了深度优先搜索DFS算法,适用于树和图的遍历。通过深入遍历和回溯操作,DFS能够有效地探索数据结构。文章还提供了具体的实现方式,使用栈的数据结构来辅助DFS的执行。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

深度优先算法DFS(depth first search)

1.适用对象:树 、图。

2遍历方式:

       ①选择某结点作为此次遍历的起始结点,选择一条支路深入遍历,

       ②如果按照某条支路遍历遇到“边界结点”(即没有孩子结点的结点)时,无法在深入向下,则回溯到此“边界节点”的“父节点”,然后找这个“父节点”的另一个子节点,继续深入遍历。

       ③再次遇到“边界结点”时,重复执行②步骤。  

3.具体实例(以树型结构举例):

4.实现方式(DFS算法实现可用栈来实现)。

  原理:DFS的关键是回溯、深入遍历。正好利用栈后进先出的特点实现DFS的回溯操作。

  方法:

            1步骤:选定一个顶点作为起始点,标记为已访问且放入stack,当作新的栈顶。 

             2步骤:分两种情况:
             ①如果刚放入stack的栈顶结点在图中存在未被访问的结点,则选择它的一个邻接点,标记为已访问,放入stack.(一个顶点的邻接点不止一个时,可以设定某规则,比如选择相邻结点中的一个小数)。

             ②如果刚放入stack的栈顶结点在图中的所有邻接结点全被访问过,则将它弹出stack,stack则产生新的栈顶,重复执行2.步骤。(体现了DFS的回溯操作)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值