深度优先遍历和广度优先遍历

本文详细探讨了深度优先遍历(DFS)和广度优先遍历(BFS)这两种重要的图和树遍历算法。深度优先遍历采用递归或栈的方式,深入探索节点的子树,而广度优先遍历则使用队列,逐层探索节点。这两种算法各有优势,在解决实际问题中如路径查找、迷宫求解等场景下广泛应用。
摘要由CSDN通过智能技术生成
bool visited[MVNum];//访问标志数组,其初值为"false"
void DFS(Graph G,int v)
{//从第v个顶点出发递归
    cout<<v;
    visited[v]=true;//访问第v个顶点,并置访问标志数组相应分量值为true
    for(w=FirstAdjVex(G,v);w>=0;w=NextAdjVex(G,v,w))
    //依次检查v的所有邻接点w,FirstAdjVex(G,v)表示v的第一个邻接点
    //NextAdjVex(G,v,w)表示v相对于w的下一个邻接点,w>=0表示存在邻接点
        if(!visited[w]) DFS(G,w);    //对v的尚未访问的邻接点w递归调用DFS
}
void DFSTraverse(Graph G)
{//对非连通图做深度优先遍历
    for(v=0;v<G.vexnum;++v) visited[v]=false;    //访问标志数组初始化
    for(v=0;v<G.vexnum;++v)    //循环上一个算法
        if(!visited[v]) DFS(G,v);    //对为访问的顶点调用DFS
}
void DFS_AM(AMGraph G,int v)
{//图G为邻接矩阵类型,从第v个顶点出发深度优先搜索遍历图
    cout<<v;
    visited[v]=true;//访问第v个顶点,并置访问标志数组相应分量为true
    for(w=0;w<G.vexnum;w++)
        if((G.arcs[v][m]!=0)&
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值