图的遍历

本文介绍了图的遍历概念,包括深度优先遍历(DFS)和广度优先遍历(BFS)。DFS类似于树的先序遍历,适用于连通图,而BFS适用于求最短路径等问题。遍历过程中处理了非连通图和回路的特殊情况,并提供了相应的代码示例。
摘要由CSDN通过智能技术生成

一、概念

图的遍历是树的遍历的扩展。图的遍历是指从某一顶点出来,访问图中所有顶点,且使每一顶点仅被访问一次。

与树的遍历不同的是,图的遍历需要处理两种特殊情况:

  •  从某一顶点出发进行遍历时,可能访问不到所有其他顶点,比如非连通图;
  •  有些图存在回路,必须保证遍历过程不能因为回路陷入死循环。
  •   解决方法:设访问标志

两种常见的遍历方法:深度优先遍历广度优先遍历

 二、深度优先遍历 

连通图的深度优先遍历的基本思想是:从图中指定顶点v出发,先访问该顶点;然后对v的所有邻接顶点wi依次检查,若wi未被访问,则以wi为新起点递归进行深度优先遍历

如右图,遍历结果为: ABECDFG            

类似于树的先序遍历

连通图的深度优先遍历代码

Status DFS_M(MGraph G, int k, Status (*visit)(int))  { 
      int i;
      if(ERROR == visit(k)) return ERROR;    // 访问k顶点
      G.tags[k] = VISITED; 
      for(i = FirstAdjVex_M(G, k); i >= 0; i = NextAdjVex_M(G, k, i)) {
            if(UNVISITED == G.tags[i])      // 位序为i的邻接顶点未访问过
                   if(ERROR == DFS_M(G, i, visit)) return ERROR;  // 对i递归深度遍历
      }
      return OK;
}

求第一个邻接顶点操作

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值