DFS和BFS是用于树和图的搜索算法,全名叫做,深度优先搜索(Depth First Search)广度优先搜索(Breadth First Search)。
就和常用的for循环遍历数组查找一样,是一种约定俗成常用的算法。两者的区别在于访问顺序不同。
关键点:使用缓存Set,保证每个节点仅访问一次。
DFS模版代码:
多叉树模版:
非递归写法:(手动维护一个栈)
BFS可以联想到水滴滴到大海,地震波等生活场景
BFS模版代码:(队列实现)
觉得看代码有点抽象的话,可以在这个网站上看动画演示: ViSualgo.net
实战例题
-
leetcode-cn.com/problems/bi… (硅谷面试频次前三名)
课后练习
-
leetcode-cn.com/problems/nu… (高频面试题)
本文内容来源:极客时间覃超老师的算法训练营