【BFS】算法模板与思路
1.BFS算法的基础理论是什么?
BFS算法名叫宽度优先搜索,虽然我能理解深度优先搜索,但我却不是很能理解宽度优先搜索。
一个很关键的点在于:宽度优先搜索是一个迭代的算法,不是递归的算法。
与DFS之间的区别:
DFS是利用栈的特性进行搜索的。
而BFS是利用队列的特性进行搜索的,队列的话,不能利用系统的特性,所以使用过程中得创建一个队列。
2.BFS的代码模板
一、不需要区分目前遍历到那一层了:
while(队列非空)
{
int len = 队列.size();
for(len) //执行len次,将队中所有的值先pop掉
{
TreeNode* tmp=队头;
pop出;
存储tmp值;
装新值;
}
}
就是这样一边出一边进。
3.宽度优先搜索需要对很多问题进行抽象,建模
这也造成了宽度优先搜索类的题目或者思路比较难想到。
4.BFS有多个变种和与别的算法技巧一起结合使用
需要通过多道题目练习加强掌握
BFS题单:
433.最小基因变化:[]:https://leetcode.cn/problems/minimum-genetic-mutation/
优质题解(有模板)[]:https://leetcode.cn/problems/minimum-genetic-mutation/solution/by-fuxuemingzhu-t1mv/
官方题解(较详细)[]:https://leetcode.cn/problems/minimum-genetic-mutation/solution/zui-xiao-ji-yin-bian-hua-by-leetcode-sol-lhwy/
双向BFS优化[]:https://leetcode.cn/problems/minimum-genetic-mutation/solution/by-ac_oier-74b4/127.单词接龙:[]:https://leetcode.cn/problems/word-ladder/
【BFS】算法模板与思路的更多相关文章
- BFS算法模板(python实现)
BFS算法整理(python实现) 广度优先算法(Breadth-First-Search),简称BFS,是一种图形搜索演算算法. 1. 算法的应用场景 2. 算法的模板 2.1 针对树的BFS模板 ...
- BFS (1)算法模板 看是否需要分层 (2)拓扑排序——检测编译时的循环依赖 制定有依赖关系的任务的执行顺序 djkstra无非是将bfs模板中的deque修改为heapq
BFS模板,记住这5个: (1)针对树的BFS 1.1 无需分层遍历 from collections import deque def levelOrderTree(root): if not ro ...
- BFS算法(——模板习题与总结)
首先需要说明的是BFS算法(广度优先算法)本质上也是枚举思想的一种体现,本身效率不是很高,当数据规模很小的时候还是可以一试的.其次很多人可能有这样的疑问,使用搜索算法的时候,到底选用DFS还是BFS, ...
- DFS 算法模板
dfs算法模板: 1.下一层是多节点的dfs遍历 def dfs(array or root, cur_layer, path, result): if cur_layer == len(array) ...
- POJ 1273 Drainage Ditches(网络流dinic算法模板)
POJ 1273给出M条边,N个点,求源点1到汇点N的最大流量. 本文主要就是附上dinic的模板,供以后参考. #include <iostream> #include <stdi ...
- 算法模板学习专栏之总览(会慢慢陆续更新ing)
博主欢迎转载,但请给出本文链接,我尊重你,你尊重我,谢谢~http://www.cnblogs.com/chenxiwenruo/p/7495310.html特别不喜欢那些随便转载别人的原创文章又不给 ...
- POJ 1815 - Friendship - [拆点最大流求最小点割集][暴力枚举求升序割点] - [Dinic算法模板 - 邻接矩阵型]
妖怪题目,做到现在:2017/8/19 - 1:41…… 不过想想还是值得的,至少邻接矩阵型的Dinic算法模板get√ 题目链接:http://poj.org/problem?id=1815 Tim ...
- HDU1532最大流 Edmonds-Karp,Dinic算法 模板
Drainage Ditches Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) To ...
- POJ 3126 Prime Path(BFS算法)
思路:宽度优先搜索(BFS算法) #include<iostream> #include<stdio.h> #include<cmath> #include< ...
- Day1 BFS算法的学习和训练
因为自己的原因,之前没有坚持做算法的相应学习,总是觉得太难就半途而废,真的算是一个遗憾了,所以现在开始,定一个30天入门学习算法计划. 我是根据<算法图解>的顺序进行安排的,自己对 ...
随机推荐
- Idea下载指南之几个选项
通常我们在下载idea等一些图形编译器时,都会有很多选项供您选择,下面我们来看下这几个英文选项吧. create desktop Shortcut Update Path variable(resta ...
- centos7 双网卡同网段双网关配置
需求: #1.服务器为双网卡: #2.网卡1为互联网 172.16.137.99/24/254 #3.网卡2为旅游专网 172.16.137.97/24/1 #4.互联网路由器为172.16.137. ...
- springcloud报springboot jar包不存在
IDEA报Error:(4, 46) java: 程序包org.springframework.boot.autoconfigure不存在问题 打开Terminal 输入mvn -U idea:ide ...
- Go 设置代理
对于 Windows 用户,可以在PowerShell中设置: $env:GOPROXY = "https://goproxy.io"
- 剪裁圆形图片cropie
<!DOCTYPE html> <html> <head> <script src="https://cdn.bootcss.com/jquery/ ...
- Linux环境使用Docker安装MongoDb
系统环境: CentOS 7.6 64位(同样适用于Ubuntu) 安装步骤: 1.创建文件夹 /home/docker/mongo/config /home/docker/mongo/data 2. ...
- Python request模块 携带cookie
# _*_coding:utf-8 _*_ import time import requests import json import sys import random import string ...
- maven本地安装jar包
mvn install:install-file -Dfile=cs-pay-client-2.0.0.jar -DgroupId=com.test.pay -DartifactId=gh-epay- ...
- pytorch学习笔记(3)--dataset使用
下载数据集 import torchvision from torch.utils.tensorboard import SummaryWriter dataset_transform = torch ...
- 通过python程序让MySQL利用binlog恢复误操作数据
MySQL利用binlog恢复误操作数据 在人工手动进行一些数据库写操作的时候(比方说数据订正),尤其是一些不可控的批量更新或删除,通常都建议备份后操作.不过不怕万一,就怕一万,有备无患总是好的.在线 ...