BFS与队列的关系(带图结合伪代码)

BFS优先宽度搜索

BFS

  1. 参数
  2. 是否标记 or 过界
  3. queue <类型x> 名称q;
  4. 相关函数
q.push(x);//入队
q.pop(x);//出队
q.front();//队首元素
q.empty();//是否为空(bool)
  1. 大体思路
void BFS(参数(此位置))
{
   
	if(标记过or过界)		return;
	标记此位置;
	queue <类型x> 名称q;//创建一个队列
	x temp=参数(此位置);//temp临时传参,当x为结构体时要用到
	q.push(temp);//入队
	//这之前都是关于初始位置的
	while (!q.empty())//当队列不为空BFS核心(分层入队)
	{
   
		temp2 = q.front();//队首传参
		q.pop();//队首出队
		for (...)//遍历邻边
		{
   
			if (未标记or未过界)//邻边满足条件
			{
   
				标记邻边;
				q.push(邻边);//邻边入队
				//标记和入队 谁在前视情况而定
			}
		}
	}
	//while里面是BFS的核心 分层入队
}

while里面是BFS的核心 分层入队:

分层入队

一开始看不懂BFS以为和DFS差不多,更不懂队列与BFS的关系
实际上为什么叫分层呢?

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值