这篇文章来讲一下深度优先搜索(Depth-First Search 简称DFS)
深搜是种搜索方法。顾名思义,深度优先就是先沿一条分支搜下去,搜到底返回来,再去搜下一个分支,如果到达了要求搜索的地方(如迷宫的出口等),则停止搜索,如果搜完了起始点所有分支还未找到结果,也停止搜索。
例如上图,按深搜的思路去搜索会怎么样呢?一起来看看
第一步:搜索到1号节点
第二步:1号节点有子节点2、3号,搜索到2号节点
第三步:2号节点有子节点4、5号,搜索4号节点
第四步:4号节点有子节点7、8号,搜索7号节点
第五步:7号节点没有子节点,回溯到4号
第六步:4号节点还有8号子节点,搜索8号
第七步:8号节点没有子节点,回溯到4号
第八步:4号节点的所有子节点均已搜索完毕,回溯到2号节点
第九步:2号节点还有5号子节点,搜索5号
第十步:5号节点有子节点9号,搜索9号节点
第十一步:9号节点没有子节点,回溯到5号
第十二步:5号节点的所有子节点均已搜索完毕,回溯到2号节点
第十三步:2号节点的所有子节点均已搜索完毕,回溯到1号节点
第十四步:1号节点还有3号子节点,搜索3号
第十五步:3号节点有子节点6号,搜索6号节点
第十六步:6号节点没有子节点,回溯到3号
第十七步:3号节点的所有子节点均已搜索完毕,回溯到1号节点
第十八步:1号节点所有子节点均已搜索完毕,由于1号节点是根节点,所以子节点搜索完毕代表此连通块的所有节点均已搜索完毕,因此搜索结束
讲完了😀相信大家也对深搜有了一定的了解了吧