概述
- 首先一定要思考明白 BFS 是为了解决什么问题?
- 路径最短问题!!!!BFS是为了去解决路径最短问题而产生的
- 虽然DFS同样可用解决路径最短问题,但是其事件复杂的极大
算法框架
- 和树的层次遍历基本上类似,不过它是再内部的一次循环中进行压入操作
public void BFS() {
//这里推荐使用 LinkedList 替代掉 stack,因为其方法名字比较明确
LinkedList<Node> list = new LinkedList();
list.addLast(Node node);
int length = 0;
while (list.isEmpty()) {
int size = list.size();
// 用于计算步数
length++;
// 再这个循环里面都是同一步
for (int i = 0; i < size; i++) {
Node point = list.removeLast();
if(point == 条件成立){
// 达到终点
return;
}
if(条件成立){
// 加入新的节点
list.addLast(Node);
}
}
}
}