深度搜索

深度搜索DFS

深搜的奥义在于-------不撞南墙不回头

“可能我撞了南墙才会回头吧,可能我见了黄河才会死心吧。。。”

来自于8102年很火的一首歌

深度优先搜索,顾名思义,就是在搜索时要深入到不能再深入为止

什么意思呢,我们拿一棵树来举例吧。
深度搜索_第1张图片

这是一个树形的数据结构,在A处,有三个选择,选择一个之后判断还能不能继续深入,即判断是否到了叶子结点。假设选择了B,还能深入,那么继续往下走,假设这次选择了E。此时到了叶子节点,没法继续深入,那么就要往回走。退回到了B之后,发现还有另外一条路可以走,直到下一次撞到了“南墙”才会回头,这就是深搜。

就像走迷宫一样,当然迷宫问题就是一类典型的深搜。
深度搜索_第2张图片
我们走迷宫的时候,除去我们来时的方向,总共有三个方向可以走,判断一下我们要去的方向是不是墙,一直这么走下去,直到三个方向都不能走的时候,就是我们所说的死胡同,这时,我们需要退回去(这其实就是回溯,深搜和回溯在一些问题上,其实是没什么差别的),退到我们上一个路口,看看还有没有路可以走,如果有就走,如果没有,就再退回到上上个路口,以此类推,如果此迷宫有一条路径,我们一定会找到,因为这样的走法我们枚举的此迷宫的所有路径。

下面是深度搜索的一些题目,可以帮助你更好的理解dfs

你可能感兴趣的:(深度搜索)