数据结构-图的深度优先遍历(DFS)和广度优先遍历(BFS)算法分析

1.2 无向图的深度优先遍历

     DFS:Depth First Search

     算法思想:1、以一个未被访问过的顶点作为起始顶点,沿当前顶点的的边走向未被访问过的顶点;

                       2、执行1步骤后,当该分支结点都被访问后,则返回到上一个顶点,继续检索其他未被访问过的顶点,直至所有的顶点都被访问过。

     即 一路走到底,不破南墙不回头//这里简称直男思维。

以下图“无向图”为例:

假设从A顶点,按照字母先后,开始进行深度遍历:

A -> B -> G -> E -> C -> D -> H -> F,深度优先遍历类似于二叉树的先序遍历。

1、访问A。 2、访问B,邻接点。3、访问G,邻接点,因为B除了A-B边,剩下 B-G这条边。

4、访问E,邻接点,字母顺序。

注,G相当于一颗二叉树,一个分支顶点被访问完就会回到这里继续检索另外一个分支。

5、访问C,邻接点,同B-G边。6、访问D,邻接点,同B-G边。

7、访问H,因为D周围的顶点=被访问了,所有此时开始回溯到G顶点,继续检索到H

8、访问F,同B-G边。   ----------结束

1.2 有向图的深度优先遍历

有向图的深度优先遍历图解:

A -> B -> F -> H -> G -> C -> D -> E

与无向图大致相仿,检索未被访问的顶点,检索+回溯,这里不做详细说明。


2.1 图的广度优先遍历

直接放图:

    A -> D -> B -> F -> C -> G -> H -> E

图的广度优先遍历比较好理解,将相同层次的临界点划分在一个层次。

由2图可知,A的邻接点为 DBF ,所以  A -> D -> B -> F,而D未被访问的邻接点 只有C,B未被访问的邻接点只有G,F未被访问的邻接点只有H 所以:A -> D -> B -> F -> C -> G -> H  , 而剩下最后一顶点 E 自动补充上去。就是改图的广度优先遍历。

总结:图的深度优先遍历算法先访问所在结点,在访问它的邻接点。与二叉树的先序遍历(先访问子树的根结点,再访问它的孩子结点)类似。图的广度优先遍历算法类似于二叉树的按层次遍历。

 

 

 

 

 

 

 

 

 

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值