dfs的学习先告一段落,从今天起,就要接触一种新的算法——bfs!一起来看一下吧~
BFS 广度优先搜索(Breadth-First-Search)
广度优先搜索算法(Breadth First Search),又称为“宽度优先搜索”,BFS是用于图
的查找算法((要求能用图表示出问题的关联性)。
BFS可用于解决2类问题:1从A出发是否存在到达B的路径;2.从A出发到达B的最短路径
整体思路
其思路为从图上一个节点出发,访间先访向其直接相)的子节点,若子节点不符合,再问其子节点的子节点,按级别顺序(一层一层 访问,直到访问到目标节点。
- 起始:将起点(源点,树的根节片)放入队列中
- 扩散:从队列中取出队头的结点,将它的相邻结点放入以列,不断重复这一步
- 终止:当队列为空时,说明我们遍历了所有的结点
与DFS区别
DFS是一条路走到黑,不撞南墙不回头 ,然后再回溯到上一级,所以是深度嘛~
直至遍历
树高h:递归的最大层数
空间复杂度:O(h)
BFS是一石惊起千层浪,泛起层层涟漪,按距离设权重层层搜索,直至遍历
空间复杂度(以二叉树为例):O(2^h)
把同级别的点放到一个队列里
做个题吧!
题目先放在这里,思考过后,明天揭晓答案!