图之遍历–广度优先遍历

何为广度优先遍历呢?

广度优先遍历(BFS),又叫宽度优先搜索或横向优先搜索,是从根结点开始沿着树的宽度搜索遍历,将离根节点最近的节点先遍历出来,在继续深挖下去。

基本思想是:

1、从图中某个顶点V0出发,并访问此顶点;

2、从V0出发,访问V0的各个未曾访问的邻接点W1,W2,…,Wk;然后,依次从W1,W2,…,Wk出发访问各自未被访问的邻接点;

3、重复步骤2,直到全部顶点都被访问为止。

下面给出广度优先遍历的例子:(广度优先遍历不是唯一的哦,只要满足“广度”的含义即可)

访问顺序为:0,2,1,5,3,4(看图很快就可得知)(将离根节点最近的节点先遍历出来,再继续深挖下去。)

知道了BFS之后,我们又要怎么通过编程来实现BFS呢?

下面给上详细的分析:

首先,先准备一个队列(利用队列的结构)和一个Set(Set用来作为类似于注册的作用,防止节点重复进入队列)

step1.先把根节点1放入队列中,同时将1注册到set中去,证实它进过队列(上面两步是同步的)

step2.把1poll出来,同时打印出来(System.out…)(前面两步也是同步的),同时将1的所有next节点都放到队列中去(放到队列中去时要提前判断这些元素之前是否有注册过,即有没有在set中)

step3.如果一个节点已经没有next节点的时候,那就直接将该节点弹出去就行,不用注册也不用添加到队列中。

下面流程图可以用来参考,下面也有源代码,源代码有注释,很好理解,看不清楚的欢迎留言~

下面附上源代码:

发表回复

相关推荐

妄图复出的张哲瀚上演疯批大戏,还想拉龚俊下水?

大家好。 好久没和大家聊聊明星了, 这几天有个艺人让我很上头, 那就是告别娱乐圈接近300天, 如今装疯卖傻的劣迹艺人 ...

· 33秒前

芍药是什么?带你走进芍药的前世今生!

嗨,花痴!欢迎来到花派千卉谷! “芍药,犹绰约也,美好貌。此草花容绰约,故以为名。” ——《本草纲目》 花派,绽放生活美 ...

· 3分钟前

芯片的分类

一、从芯片种类划分 (1)计算芯片(大脑):如CPU,GPU,FPGA,MCU,AI等都用作计算分析的,和人体大脑类似。 (2)存储芯 ...

· 9分钟前

增值税税负率如何计算,并附全套税负率预警表格,还不快收藏码住

身为会计,我们都知道增值税的税负率=当期应纳增值税/当期应税销售收入*100%!有很多会计都对企业税负率有疑问,也会问:我 ...

· 39分钟前

麦克斯韦速度分布律

速度空间和速度分布函数 在经典物理学中速度的取值看作连续,可以引入速度空间的概念来描述分子的速度。 简单来说,速度空间 ...

· 45分钟前