本文已参与「新人创作礼」活动,一起开启掘金创作之路
这是数据结构期末算法实践时的题目,在掘金也发一遍,我选了图的遍历这一块,因为感觉比起其他的题目的话,会更加的清楚相关算法,写这篇文章是为了能够让大家更加清楚图的遍历算法,也是为了自己能够再进行一次相关知识的回顾,也希望看到文章的宝贝们对图的遍历这一部分更加清楚!!
一、 什么是图的遍历 图的遍历是指从图中的任一顶点出发,对图中的所有顶点访问一次且只访问一次(访问一次,但不止用到一次)。 图的遍历操作和树的遍历操作功能相似(二叉树的前序,中序,后序遍历,本质上也可以认为是深度优先遍历、而二叉树的层序遍历,本质上也可以认为是广度优先遍历)。图的遍历是图的一种基本操作,图的许多其它操作都是建立在遍历操作的基础之上。 就比如你想出去逛街,街上有很多店,a,b,c,d,e,f,g,要怎么才能把他们都逛呢,假如运用我们图的遍历的操作,那么就可以通过广度优先和深度优先来进行安排
那么了解什么是图的遍历之后,我们来了解一下什么是广度遍历和深度遍历呢
广度优先遍历(Breadth First Search),又称为广度优先搜索,简称BFS。
是一种分层的查找过程,每向前走一步可能访问一批顶点,不像深度优先搜索那样有往回退的情况,因此它不是一个递归的算法。为了实现逐层的访问,算法必须借助一个辅助队列,以记忆正在访问的顶点的下一层顶点。 其实他本意就是,先遍历一个节点,然后遍历那个节点所连接的的周边节点,之后再一个结点一个结点的往外遍历,重复循环
大家还记得我上面举例子的这张图吗,如果按照广度优先遍历的话,那么访问顺序为a、b、c、d、e、f、g、h。
就是从上面一层层的遍历下来,这张图是二叉树的样式,所以可能比较容易让大家理解,那么我们现在换成图来一起做一次
那么这张图,我们设从“3”开始遍历,运用广度优先的方法,那么我们所得到的遍历顺序为3,2,3,4,5,1;