BFS和DFS

作者: Joe_Chestnut | 来源:发表于2019-07-03 11:47 被阅读0次

BFS:广度优先搜索

DFS:深度优先搜索


树的遍历

BFS:A   B C D  E F  G  H I

DFS:  A B  C E  F  D G H  I


图的遍历

从A出发

BFS:A  B  C  D  E  F (其中一种)

DFS:A  B  D  F  E  C (其中一种)

数据结构

BFS: 队列(先进先出)

步骤:1、首先A入队列,

            2、A出队列时,A的邻接结点B,C相应进入队列 

            3、B出队列时,B的邻接结点A,C,D中未进过队列的D进入队列

            4、C出队列时,C的邻接结点A,B,D,E中未进过队列的E进入队列

            5、D出队列时,D的邻接结点B,C,E,F中未进过队列的F进入队列

            6、E出队列,没有结点可再进队列

            7、F出队列

DFS:栈(先进后出)

步骤:1、首先A入栈,

            2、A出栈时,A的邻接结点B,C相应入栈  (这里假设C在下,B在上)

            3、B出栈时,B的邻接结点A,C,D中未进过栈的D入栈

            4、D出栈时,D的邻接结点B,C,E,F中未进过栈的E、F入栈(假设E在下,F在上)

            5、F出栈时,F没有邻接结点可入栈

            6、E出栈,E的邻接结点C,D已入过栈

            7、C出栈

代码(Python)

1、图有两种表示方式,邻接矩阵和邻接表

      这里用python字典结构表示:

BFS

DFS

非递归

能用栈的地方都能用递归

递归

DFS递归和非递归的结果不同,非递归:A C E D F B    递归:A B C D E F

此外,深度优先搜索和广度优先搜索的结果都不唯一。

参考视频:https://www.bilibili.com/video/av25763384

相关文章

  • Binary Tree(2)

    BFS vs DFS for Binary Tree What are BFS and DFS for Binar...

  • 用Python实现树的BFS与DFS

    一、BFS与DFS简介 在理解动态规划、BFS和DFS一文中,已经集合具体例子,介绍了图的BFS与DFS。但是比较...

  • BFS

    [TOC] BFS 和 DFS BFS广度有限搜索和DFS深度优先搜索算法是特别常用的两种算法 DFS 算法就是回...

  • BFS和DFS随笔

    BFS和DFS BFS和DFS视频讲解-正月点灯笼 BFS核心点是用队列存放当前搜索的点 用在有环图的时候需要存放...

  • LeetCode 第104题:二叉树的最大深度

    1、前言 2、思路 采用 DFS 或者 BFS 都可以。 3、代码 DFS: BFS:

  • 133. Clone Graph 复制无向图

    bfs dfs

  • BFS和DFS

    DFS BFS

  • DFS与BFS LeetCode 刷题小结(一)

    本节我们将汇总一些 LeetCode bfs与dfs相关的题。 关于深度优先搜索(DFS)和广度优先搜索(BFS)...

  • BFS和DFS

    BFS:广度优先搜索 DFS:深度优先搜索 树的遍历 BFS:A B C D E F G H I DFS: A ...

  • DFS 和 BFS

    DFS:DFSDepth-First,深度优先搜索BFS:Breath-First,宽度优先搜索 都是一种搜索,只...

网友评论

    本文标题:BFS和DFS

    本文链接:https://www.haomeiwen.com/subject/umafhctx.html