廣度優先遍歷BFS 入門

2021-10-03 12:29:03 字數 864 閱讀 5529

廣度優先遍歷

leetcode 打卡題 很有意思的一道題 這道題讓我學會了廣度優先遍歷

對於格仔點來說 它的廣度就是它周圍的四個點,用乙個for迴圈就能搞定了。

思路

先掃一邊陣列 將壞橘子加入到佇列中,再開乙個二維陣列用來存放有沒有被感染的標記。

這裡放兩張圖來便於理解,左邊是原陣列,右邊是標記陣列 可以很清楚的看到感染的波數

;//初始化為0;

int dir_x[4]

=;//定義座標系

int dir_y[4]

=;queue

int,

int>

> q;

//定義乙個佇列 用來存壞橘子的

for(

int i=

0;i)for

(int j=

0;j) dis[i]

[j]=-1

;//掃瞄出腐爛橘子的位置

for(

int i=

0;i}while

(!q.

empty()

)}return

(cnt>0)

?-1:level;

}

BFS廣度優先遍歷

樹的層序遍歷即為bfs的應用。實質就是利用乙個佇列將頂點v的鄰接點儲存,因樹的結構比較特殊,所以不需要進行設定flag訪問位,但圖的情況比較複雜,一般需要對每個結點是否被訪問進行標記。利用bfs可以很容易的利用層數求出最短的步數,比如二叉樹利用層序遍歷求樹的高度,但深搜一般也可以實現。廣度優先搜尋能...

BFS廣度優先搜尋遍歷

廣度優先搜尋遍歷 problem description 給定乙個無向連通圖,頂點編號從0到n 1,用廣度優先搜尋 bfs 遍歷,輸出從某個頂點出發的遍歷序列。同乙個結點的同層鄰接點,節點編號小的優先遍歷 input 輸入第一行為整數n 0 n 100 表示資料的組數。對於每組資料,第一行是三個整數...

廣度優先搜尋 BFS遍歷

廣度優先搜尋 breadth first search bfs 是乙個分層搜尋的過程,沒有回退過程,是非遞迴的。為避免重複訪問,需要乙個狀態陣列visited n 來儲存各頂點的訪問狀態。為實現逐層訪問,bfs演算法在實現時需要乙個佇列,以記憶正在訪問的這一層和上一層的頂點,以便於向下一層訪問。例題...