1.BFS算法的基础理论是什么?

BFS算法名叫宽度优先搜索,虽然我能理解深度优先搜索,但我却不是很能理解宽度优先搜索。

一个很关键的点在于:宽度优先搜索是一个迭代的算法,不是递归的算法。

与DFS之间的区别:

DFS是利用栈的特性进行搜索的。

而BFS是利用队列的特性进行搜索的,队列的话,不能利用系统的特性,所以使用过程中得创建一个队列。

2.BFS的代码模板

一、不需要区分目前遍历到那一层了:

while(队列非空)
{
int len = 队列.size();
for(len) //执行len次,将队中所有的值先pop掉
{
TreeNode* tmp=队头;
pop出;
存储tmp值;
装新值;
} }
就是这样一边出一边进。

3.宽度优先搜索需要对很多问题进行抽象,建模

这也造成了宽度优先搜索类的题目或者思路比较难想到。

4.BFS有多个变种和与别的算法技巧一起结合使用

需要通过多道题目练习加强掌握

BFS题单:

【BFS】算法模板与思路的更多相关文章

  1. BFS算法模板(python实现)

    BFS算法整理(python实现) 广度优先算法(Breadth-First-Search),简称BFS,是一种图形搜索演算算法. 1. 算法的应用场景 2. 算法的模板 2.1 针对树的BFS模板 ...

  2. BFS (1)算法模板 看是否需要分层 (2)拓扑排序——检测编译时的循环依赖 制定有依赖关系的任务的执行顺序 djkstra无非是将bfs模板中的deque修改为heapq

    BFS模板,记住这5个: (1)针对树的BFS 1.1 无需分层遍历 from collections import deque def levelOrderTree(root): if not ro ...

  3. BFS算法(——模板习题与总结)

    首先需要说明的是BFS算法(广度优先算法)本质上也是枚举思想的一种体现,本身效率不是很高,当数据规模很小的时候还是可以一试的.其次很多人可能有这样的疑问,使用搜索算法的时候,到底选用DFS还是BFS, ...

  4. DFS 算法模板

    dfs算法模板: 1.下一层是多节点的dfs遍历 def dfs(array or root, cur_layer, path, result): if cur_layer == len(array) ...

  5. POJ 1273 Drainage Ditches(网络流dinic算法模板)

    POJ 1273给出M条边,N个点,求源点1到汇点N的最大流量. 本文主要就是附上dinic的模板,供以后参考. #include <iostream> #include <stdi ...

  6. 算法模板学习专栏之总览(会慢慢陆续更新ing)

    博主欢迎转载,但请给出本文链接,我尊重你,你尊重我,谢谢~http://www.cnblogs.com/chenxiwenruo/p/7495310.html特别不喜欢那些随便转载别人的原创文章又不给 ...

  7. POJ 1815 - Friendship - [拆点最大流求最小点割集][暴力枚举求升序割点] - [Dinic算法模板 - 邻接矩阵型]

    妖怪题目,做到现在:2017/8/19 - 1:41…… 不过想想还是值得的,至少邻接矩阵型的Dinic算法模板get√ 题目链接:http://poj.org/problem?id=1815 Tim ...

  8. HDU1532最大流 Edmonds-Karp,Dinic算法 模板

    Drainage Ditches Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) To ...

  9. POJ 3126 Prime Path(BFS算法)

    思路:宽度优先搜索(BFS算法) #include<iostream> #include<stdio.h> #include<cmath> #include< ...

  10. Day1 BFS算法的学习和训练

    ​ 因为自己的原因,之前没有坚持做算法的相应学习,总是觉得太难就半途而废,真的算是一个遗憾了,所以现在开始,定一个30天入门学习算法计划. ​ 我是根据<算法图解>的顺序进行安排的,自己对 ...

随机推荐

  1. css 多行隐藏

    overflow: hidden; text-overflow: ellipsis; display: -webkit-box; -webkit-line-clamp: 1; -webkit-box- ...

  2. 上传媒体文件--添加显示进度条 layui的upload控件

    上传媒体文件--添加显示进度条   layui的upload控件 详细上传功能请参考博客:上传文件--媒体文件+获取上传文件的属性信息 layui的upload控件 - じ逐梦 - 博客园 (cnbl ...

  3. ionic 架构

    1.路由:rout,页面内容:html,页面css:scss,js脚本内容:ts 2.功能介绍 路由:负责组织每个页面. 页面css:scss,负责定制每个组件的内容,比如组件是iobag,那么在这个 ...

  4. Could not resolve dependency:peer swiper@“^5.2.0“ from vue-awesome-swiper@4.1.1

    在安装vue-awesome-swiper时报错: Could not resolve dependency:peer swiper@"^5.2.0" from vue-aweso ...

  5. 打卡node day03 --http 内置模块

    1.内置模块 http 2.加上校验 3.cheerio 可以使用jq 里的选择器 4.结合使用 5.获取的数据是http 路径 拿到具体的图片 6.循环图片

  6. 为什么JAVA中(byte)128结果为-128;(byte)-129结果为127

    为什么JAVA中(byte)128结果为-128;(byte)-129结果为127 在JAVA中默认的整型为int型,int型占4个字节,为32位.byte占一个字节为8位. JAVA中的二进制都是采 ...

  7. Angular+FileSaver实现导出(xlsx或ExcelJS)

    1.安装相关插件 npm install file-saver --savenpm install @types/file-saver --save-dev 一.xlsx(虽然强大,但是默认不支持改变 ...

  8. unity读取Excel表格保存到Sqlite数据库

    1.读取Excel表格和保存sqlite数据库所用到的dll文件   下载链接:dll文件 最后如下图所示 废话不多说了,直接上代码吧 因为太长就折叠了 using System.Collection ...

  9. XSStrike-20220320

    Usage: xsstrike.py [-h] [-u TARGET] [--data PARAMDATA] [-e ENCODE] [--fuzzer] [--update] [--timeout ...

  10. Kubernetes--管理Pod对象的容器(1)

    Pod是Kubernetes系统的基础单元,是资源对象模型中可由用户创建或部署的最小组件,也是在Kubernetes系统上运行容器化应用的资源对象.其他的大多数资源对象都是用于支撑和扩展Pod对象功能 ...