七十九、深度和广度优先搜索算法

举报
毛利 发表于 2021/07/15 04:00:01 2021/07/15
【摘要】 @Author:Runsen 编程的本质来源于算法,而算法的本质来源于数学,编程只不过将数学题进行代码化。 ---- Runsen 深度优先搜索和广度优先搜索作为应用广泛的搜索算法,一般是必考算法。 深度优先算法(DFS) 深度优先算法的本质是回溯算法,多数是应用在树上,一个比较典型的应用就是二叉树的中序遍历。 DFS的实现考虑要以下几个问题即可: ...

@Author:Runsen

编程的本质来源于算法,而算法的本质来源于数学,编程只不过将数学题进行代码化。 ---- Runsen

深度优先搜索和广度优先搜索作为应用广泛的搜索算法,一般是必考算法。

深度优先算法(DFS)

深度优先算法的本质是回溯算法,多数是应用在树上,一个比较典型的应用就是二叉树的中序遍历。

DFS的实现考虑要以下几个问题即可:

①.边界范围:即搜索终止条件,递归结束条件。

②.可供选择的范围列表:所有可供选择的范围列表。

③.已做出的选择列表:标记当前已经做出的选择。

深度优先搜索是图论中的经典算法,利用深度优先搜索算法可以产生目标图的相应拓扑排序表,利用拓扑排序表可以方便的解决很多相关的图论问题,如最大路径问题等等。一般用堆数据结构来辅助实现DFS算法。

根据深度优先搜索的特点,采用递归函数实现比较简单。

广度优先算法(BFS)

先访问完当前顶点的所有邻接点,然后再访问下一层的所有节点,该算法适用于解决最短、最小路径等问题,但是构建广度优先算法需要维护自己的队列。

比如,二叉树的层次遍历,我们大概会有如下几个步骤:

  • 向Queue中放入root节点。
  • 只要这个Queue中有元素就一直遍历。</

文章来源: maoli.blog.csdn.net,作者:刘润森!,版权归原作者所有,如需转载,请联系作者。

原文链接:maoli.blog.csdn.net/article/details/107182457

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。