深度优先搜索(DFS)和广度优先搜索(BFS)

深度优先搜索(DFS)

事实上,深度优先搜索属于图算法的一种,英文缩写为DFS即Depth First Search.其过程简要来说是对每一个可能的分支路径深入到不能再深入为止,而且每个节点只能访问一次.
从根开始计算,到找到位于某个节点的解,回溯法(深度优先搜索)作为最基本的搜索算法,其采用了一种“一只向下走,走不通就掉头”的思想(体会“回溯”二字),相当于采用了先根遍历的方法来构造搜索树。
————摘自<深度优先搜索>《百度百科》

从百科的摘要我们可以知道,深度优先搜索(以下简称深搜)的思想其实很简单,就是“不撞南墙不回头”,以下是详细讲述:
一棵树
以一颗树举例。
从1出发,1有两个子结点2和3,按顺序来先走到2,2有两个子结点4和5,按顺序来先走到4。
4没有子结点,也就是说已经走到头了,“撞墙”了,所以得回头了。
那么我们回到2,寻找下一个未遍历的子结点也就是5,5没有子结点,于是回头。
此时2的两个结点都已经走过了,所以要继续回头,回到1……
因此深搜对该图的遍历顺序应该是:
1 2 4 5 3 6 7
放在二叉树里其实就是先序遍历。

代码实现

用矩阵表示这棵树(这里只是为了方便),t[a][b]指的是b是a的子结点。

#include <iostream>
using namespace std;
int sum;//遍历的点数
int t[8][8];//树
void dfs(int x){
   
	sum++;//点数+1
	for(int i=1;i<=7;i++){
   //按顺序遍历子结点
		if
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值