深度优先搜索DFS

简单摘抄一下深度优先搜索算法的概念,编程实现语句和应用场景

概念:

从起点开始前进,当碰到岔道口时,总是选择其中一条岔路前进,在岔路上如果又遇到新的岔道口,任然选择新岔道口的其中一条岔路前进,直到碰到死胡同才退回最近的岔道口选择另一条岔路;

总是以“深度”作为前进的关键词;

深度优先搜索是一种枚举所有完整路径以遍历所有情况的搜索算法;

深度优先算法可以使用来实现,与树的先序遍历类似。

递归的方式便于理解。

编程伪代码语句:

void DFS ( Vertex V ){
    visited[V] = true ;
    for ( V 的每个邻接点 W ){
        if ( !visited[W] )
           DFS ( W );
    }
}
         

DFS邻接表存储代码:

void visit( Vertex V ){
     printf("正在访问顶点%d\n",V);
}
// Visited[] 为全局变量,初始化为false
void DFS ( LGraph Graph, Vertex V, void ( *Visit)(Vertex)){
// 以V为出发点对邻接表存储的图Graph进行DFS搜索
     PtrToAdjvNode W;
     Visit( V );                           //访问第V个顶点
     Visited[V] = true ;                   // 标记访问
     for ( W = Graph->G[V].FirstEdge; W; W = W->Next) // 对V的每个邻接点W->Adjv
         if ( !Visited[W->Adjv] )          //若W->Adjv未被访问
            DFS ( Graph, V, Visit);  
}
             

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值