深度优先搜索和广度优先搜索
本文最后更新于 2020年4月7日 下午
深度优先搜索
基本思想:它的思想是从一个顶点V0开始,沿着一条路一直走到底,如果发现不能到达目标解,那就返回到上一个节点,然后从另一条路开始走到底,这种尽量往深处走的概念即是深度优先的概念
例
V0->V1->V4->V3->V5->V6,先从v0到V1,再从V1到V4,发现到了终点,就退回到V1继续寻找
代码
注意恢复初始状态十分重要,在一种情况走不了的情况下它可以使其恢复初始状态试下一条路

例题:
遍历连通图,能否从v0到v6
答案
说明,重要的便是模板,先判断当前情况是否满足,如果满足则退出,不满足则遍历所有情况,如果某一位置到了头便会返回false,然后返回到分叉点,搜索下一步(遍历作用在这),而最后一定要回到初始状态,因为别的搜索也可能用
广度优先搜索
1 | |
模板
说明:从某一个起始节点开始,看是否满足,如果不满足, 遍历所有可能的情况,这里便是tt,如果tt存在,那么就把它送入队列中,之后继续遍历可能情况,这里需要两个数组,一个数组是用来确定这点是否已经走过,另外一个数组是用来记录步数的。另外,有些题可能会导致数组超过范围,这时就要写一个判断条件排除掉越界的
深度优先搜索和广度优先搜索
https://www.xinhecuican.tech/post/37663.html