BSF框架

270 阅读1分钟

概述

  • 首先一定要思考明白 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);
            }
        }
    }
}