1.入队(push)
2.出队(pop)
3.判断队列是否为空(empty)
4.统计队列元素个数(size)
5.访问队首元素(front)
#include<queue> //queue头文件 queue<T> q; //构建一个T类型的队列 q.push(XX); //入队 q.pop(); //出队 q.front() //获得队首元素 q.empty(); //判断队列是否为空,在pop之前需要检查一下
不同于深搜的一搜到底,广搜更倾向于一层一层搜。
深搜:A-B-E-F-C-D-G
广搜:A-B-C-D-E-F-G
void BFS() { 初始化,添加开始节点(例如1) while (队列不为空) { 获取队首元素,将vis设置为1 //保险 for (遍历该元素所有邻居) { if(该邻居进过队) { 入队,将vis设置为1 //保险 } } 弹出队首元素 } } ———————————————————————————————————————————————— void BFS(起始点) { 将起始点放入队列中; 标记起始点访问; while (如果队列不为空) { 访问队列首元素; 删除队列首元素; for (x 所有相邻的点) { if (该点未访问且合法) { 将该点加入队列末尾 } } } 队列为空,BFS结束 }