1 | // 计算从起点 start 到终点 target 的最近距离 |
tips:
BFS 的核心思想就是把一些问题抽象成图,从一个点开始,向四周开始扩散。问题的本质就是让你在一幅「图」中找到从起点 start
到终点 target
的最近距离。一般来说,我们写 BFS 算法都是用「队列」这种数据结构,每次将一个节点周围的所有节点加入队列。
BFS 相对 DFS 的最主要的区别是:BFS 找到的路径一定是最短的,但代价就是空间复杂度比 DFS 大很多
双向 BFS 优化,传统的 BFS 框架就是从起点开始向四周扩散,遇到终点时停止;而双向 BFS 则是从起点和终点同时开始扩散,当两边有交集的时候停止。