又水了一篇博客呜呜,第一次尝试写DFS和BFS,做题也迷迷糊糊,看着大佬文章简单写了写总结,后续会补上DFS和BFS的题目。
BFS DFS介绍
DFS:深度优先搜索,又叫回溯算法。这个算法的核心就是不断的往更深的地方搜索,如果更深的地方搜索失败了,就返回来搜,是一个回溯的过程。
BFS:广度优先搜索,也是一种搜索算法,讲究搜索的广度,所以叫广度优先算法。这个算法的核心就是,先把周围的找完,再去找更深的地方。
这里区分下dfs和bfs,dfs就是一条路走到底,发现没路了,返回来,走另一条路,不撞南墙不回头。bfs就是每条路都走一点,这样一点点走总会走到想要的路。
实现思路
这两种算法都可以使用的递归的方式,其中dfs还可以用栈来实现,bfs还可以用队列实现。
DFS和BFS用递归实现的思路:
根据各自传参的优先级的顺序,不断的调用自身。
一般情况下,用递归实现BFS比较为难,所以常用队列实现。
DFS用栈实现的思路:
每遇到一个元素,就把这个元素的所有邻接元素入栈,当栈不为空的时候,不断的从栈顶拿出元素进行操作,直到栈为空。
BFS用队列实现的思路:
每遇到一个元素,就把这个元素的所有邻接元素放入队列,当队列不为空的时候,不断从队首拿出元素进行操