sunny123456

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

深度优先遍历与广度优先遍历的区别
https://zhidao.baidu.com/question/119345648/answer/3090369332.html

一、指代不同

1、深度优先遍历:是对每一个可能的分支路径深入到不能再深入为止,而且每个节点只能访问一次。

2、广度优先遍历:系统地展开并检查图中的所有节点,以找寻结果。

二、特点不同

1、深度优先遍历:所有的搜索算法从其最终的算法实现上来看,都可以划分成两个部分──控制结构和产生系统。正如前面所说的,搜索算法简而言之就是穷举所有可能情况并找到合适的答案,所以最基本的问题就是罗列出所有可能的情况,这其实就是一种产生式系统。

2、广度优先遍历:并不考虑结果的可能位置,彻底地搜索整张图,直到找到结果为止。

![](https://img2022.cnblogs.com/blog/1192734/202206/1192734-20220606230326036-1816708376.png)

三、算法不同

1、深度优先遍历:把根节点压入栈中。每次从栈中弹出一个元素,搜索所有在它下一级的元素,把这些元素压入栈中。并把这个元素记为它下一级元素的前驱。找到所要找的元素时结束程序。如果遍历整个树还没有找到,结束程序。

2、广度优先遍历:把根节点放到队列的末尾。每次从队列的头部取出一个元素,查看这个元素所有的下一级元素,把它们放到队列的末尾。并把这个元素记为它下一级元素的前驱。找到所要找的元素时结束程序。如果遍历整个树还没有找到,结束程序。

参考资料来源:百度百科-广度优先遍历

参考资料来源:百度百科-深度优先遍历

posted on 2022-06-06 23:04  sunny123456  阅读(5697)  评论(0编辑  收藏  举报