日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

图之遍历--广度优先遍历

發(fā)布時(shí)間:2025/3/12 编程问答 16 豆豆
生活随笔 收集整理的這篇文章主要介紹了 图之遍历--广度优先遍历 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

何為廣度優(yōu)先遍歷呢?

廣度優(yōu)先遍歷(BFS),又叫寬度優(yōu)先搜索或橫向優(yōu)先搜索,是從根結(jié)點(diǎn)開始沿著樹的寬度搜索遍歷,將離根節(jié)點(diǎn)最近的節(jié)點(diǎn)先遍歷出來(lái),在繼續(xù)深挖下去。


基本思想是:

1、從圖中某個(gè)頂點(diǎn)V0出發(fā),并訪問(wèn)此頂點(diǎn); 2、從V0出發(fā),訪問(wèn)V0的各個(gè)未曾訪問(wèn)的鄰接點(diǎn)W1,W2,…,Wk;然后,依次從W1,W2,…,Wk出發(fā)訪問(wèn)各自未被訪問(wèn)的鄰接點(diǎn); 3、重復(fù)步驟2,直到全部頂點(diǎn)都被訪問(wèn)為止。


下面給出廣度優(yōu)先遍歷的例子:(廣度優(yōu)先遍歷不是唯一的哦,只要滿足“廣度”的含義即可)

訪問(wèn)順序?yàn)?#xff1a;0,2,1,5,3,4(看圖很快就可得知)(將離根節(jié)點(diǎn)最近的節(jié)點(diǎn)先遍歷出來(lái),再繼續(xù)深挖下去。




知道了BFS之后,我們又要怎么通過(guò)編程來(lái)實(shí)現(xiàn)BFS呢?

下面給上詳細(xì)的分析:

首先,先準(zhǔn)備一個(gè)隊(duì)列(利用隊(duì)列的結(jié)構(gòu))和一個(gè)Set(Set用來(lái)作為類似于注冊(cè)的作用,防止節(jié)點(diǎn)重復(fù)進(jìn)入隊(duì)列)

step1.先把根節(jié)點(diǎn)1放入隊(duì)列中,同時(shí)將1注冊(cè)到set中去,證實(shí)它進(jìn)過(guò)隊(duì)列(上面兩步是同步的)

step2.把1poll出來(lái),同時(shí)打印出來(lái)(System.out...)(前面兩步也是同步的),同時(shí)將1的所有next節(jié)點(diǎn)都放到隊(duì)列中去(放到隊(duì)列中去時(shí)要提前判斷這些元素之前是否有注冊(cè)過(guò),即有沒(méi)有在set中)

step3.如果一個(gè)節(jié)點(diǎn)已經(jīng)沒(méi)有next節(jié)點(diǎn)的時(shí)候,那就直接將該節(jié)點(diǎn)彈出去就行,不用注冊(cè)也不用添加到隊(duì)列中。

下面流程圖可以用來(lái)參考,下面也有源代碼,源代碼有注釋,很好理解,看不清楚的歡迎留言~



下面附上源代碼:




總結(jié)

以上是生活随笔為你收集整理的图之遍历--广度优先遍历的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。