BFS DFS Back

1,BFS


可以求解最短路径等 最优解 问题

BFS  先进先出

在程序实现 BFS 时需要考虑以下问题:

队列:用来存储每一轮遍历得到的节点;

标记:对于遍历过的节点,应该将它标记,防止重复遍历


 path = [[0,0]]    ##头结点放入

        while path:

            for _ in range(len(path)):   遍历每一层节点

                for new_x, new_y in [[x - 1, y - 1], [x - 1, y], [x - 1, y + 1], [x, y - 1],

                                     [x, y + 1], [x + 1, y - 1], [x + 1, y], [x + 1, y + 1]]:  #几个方向的遍历

                            各种边界条件的判断

                            将新的节点加path

2,DFS



在程序实现 DFS 时需要考虑以下问题:

栈:用栈来保存当前节点信息,当遍历新节点返回时能够继续遍历当前节点。可以使用递归栈。

标记:和 BFS 一样同样需要对已经遍历过的节点进行标记。

先进后出

带数组的版本

不带数组,用递归代替



最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 深度优先搜索(DFS) 深度优先搜索,重点就在于“深度”一词,不碰到死胡同就不回头。深度优先搜索是一种枚举所有完整...
    荷包蛋要三分熟阅读 989评论 0 0
  • DFS 以迷宫搜索为例说明DFS。 如图8-1,从起点开始前进,当碰到岔道口时,总是选择其中一条岔道前进(例如图中...
    一斗阅读 601评论 0 0
  • 如果需要阅读代码,请移步:A*算法 引言 1968年,的一篇论文,“P. E. Hart, N. J. Ni...
    taylar_where阅读 2,573评论 0 4
  • Python扫雷游戏 #coding: utf-8__note__ = """* 扫雷小游戏* 需要python3...
    側耳听偑阅读 349评论 0 1
  • 题目链接 Bobo has a string of length 2(n + m) which consists ...
    kinoud阅读 188评论 0 0