DFS 、BFS、回溯

1、dfs(res,当前结构,当前候选热数据,当前目标值,当前搜索的层级)
在这里插入图片描述
2、BFS(Breadth first search)
对于树来说,BFS就是层次遍历
而图的BFS 与树的BFS 不同点在于,树有根节点,图没有,所以图的BFS 要任意选择某节点进行遍历。
如图,若选择A节点作为开始节点,与A直接相连的节点为B和C,则下一层遍历是B和C。
A B C D E F
注意,B 和C 调换顺序没关系,但是DE不能调换,因为要先展开节点B,与B相连的有点A、C 、D,AC 以及遍历,只剩D节点,所以必须先遍历D节点
所以通常BFS不止一种结果
通常BFS借助队列来实现,将A放入队列中,弹出A的同时将A的所有临界点B、C放入队列,再弹出B ,同时将B的所有临界点D(A、C已经遍历过,不再入队列)放入队列,弹出C ,同时将C 的邻接点E放入队列,最后再一次弹出队列中的值。
在这里插入图片描述
DFS(Depth first search)
一条路走到黑
A B D F E C
同样的,在每个节点的选择很多,所以BFS结果也不止一种
与BFS 不同的是,DFS借助栈来实现遍历
3、当边上出现权值时,如何计算最短距离
在这里插入图片描述

优先队列Priority Queue

回溯

回溯法都可以抽象为树结构

//回溯算法模板
void  backtracking(参数){
	if(终止条件)	{
		存放结果 ;
		return}

    for(选择:集合的元素集(树中节点孩子数量为集合大小)){
		处理节点(结果集的来源);
		//递归
		backtracking(路径,选择列表);
		回溯操作(撤销/弹出处理结果);
	}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值