美文网首页
BFS和DFS的基本思想

BFS和DFS的基本思想

作者: NickStudy | 来源:发表于2018-03-12 21:45 被阅读0次

最近碰到BFS和DFS的编程题比较多,所以想整理一下相关算法的基本思想,以便以后使用。

1.DFS(深度优先搜索)

深度优先直白讲是一种一条道走到黑,撞了南墙再回头的算法。所以其整个搜索空间可以表示为一个多叉树。其可以用递归和栈来分别实现。基本思想如下:

1.1 递归实现DFS

function DFS(root){

递归出口:搜索到最底部叶节点

递归部分:循环当前可到达的所有子节点:

                       循环内部:处理该子节点,调用DFS(childrenroot),复原该子节点。}

1.2 栈实现DFS

使用栈保存未被检测的结点,结点按照深度优先的次序被访问并依次被压入栈中,并以相反的次序出栈进行新的检测。

function DFS(root){

初始:root入栈;

while(栈非空){

出栈一个结点,处理该节点;

把该节点可到达的节点都依次压入栈中;

}

}

2.BFS(广度优先搜索)

广度优先的搜索空间也可以表示为一个多叉树。其实现树结构的逐层遍历。BFS可以用队列来实现。基本思想如下:

2.1 栈实现DFS

使用栈保存未被检测的结点,结点按照深度优先的次序被访问并依次被压入栈中,并以相反的次序出栈进行新的检测。

function DFS(root){

初始:root入队列。

while(队列非空){

出队一个结点,处理该节点;

把该节点可到达的节点都依次压入栈中;

}

}

相关文章

  • BFS和DFS的基本思想

    最近碰到BFS和DFS的编程题比较多,所以想整理一下相关算法的基本思想,以便以后使用。 1.DFS(深度优先搜索)...

  • 用Python实现树的BFS与DFS

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

  • BFS

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

  • Binary Tree(2)

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

  • BFS和DFS随笔

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

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

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

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

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

  • 133. Clone Graph 复制无向图

    bfs dfs

  • BFS和DFS

    DFS BFS

  • BFS和DFS

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

网友评论

      本文标题:BFS和DFS的基本思想

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