DFS深度优先搜索

深度优先搜索是一个递归的过程。

它从图中某个满足要求的顶点v出发,访问此节点并将访问位更改,然后从v的未被访问的邻接点出发,深度优先遍历图,直到图中所有和v有路径相通的顶点都被访问到。

DFS函数的意义依据情况而定,比如说要在图中搜索是否有某条路径,将返回值设为boolean;另外,DFS时还经常为每个结点盖上一个时间戳,从起始点出发达到某个邻接点所需要的最大步数,则利用一个int []path的数组保存遍历遇到的最大值等等。

深搜更适合在图中进行目标确定的查找。

遍历过程如下:

 DFSfunc(){//DFS起始的接口函数
	   boolean[][] flag=new boolean[][];//访问标记的数组,指明一个顶点是否被访问过。
	   for(any顶点v in {顶点需要满足的条件}){//对满足条件的顶点进行DFS
		   if(flag(v) == false) {//对未访问过的顶点调用DFS,若是连通图,只会执行一次
			   DFS(map,v,flag);//DFS为所要搜索的图,一般为矩阵。
		   }
	   }
   }
   def: DFS(map,v,flag){//DFS递归算法
	   if(v超出边界条件)//比如矩阵越界或访问位为true等条件
		   return;
	  flag(v) =true;//将v的访问位置为已访问		
	  if(满足条件){
		  do something;//像是树的前序遍历。
	  }  
		for(any v1  :  顶点v的邻接点){//递归调用DFS
			if(flag(v1) == false){
				DFS(map,v1,flag);
			}
		}




  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值