廣度遍歷實現

2021-09-02 00:23:47 字數 853 閱讀 9446

#coding=utf-8

import queue

#圖的鄰接表

grap=[,

[2,3],

[1,4],

[1],

[2,5,6],

[4],

[4,7],

[6],

[10],[9],

[8],

[8]]

//bfs 遍歷結果為 [1, 2, 3, 4, 5, 6, 7, 8, 10, 9]

#初始化

visit=#節點的訪問順序

count=0;

for i in range(11):

#訪問u節點的所有鄰接節點

def get_all_beside_node(u):

return grap[u]

#bfs 遍歷乙個臨接子圖

def bfs(i):

q=queue.queue();

q.put(i)

global count

count += 1

visit[i]=count

while(not q.empty()):

u=q.get()

for w in get_all_beside_node(u):

if(visit[w]==0):

q.put(w)

count+=1

visit[w]=count

#遍歷整棵樹 可能是非連通圖

for i in range(1,11):

if(visit[i]==0):

bfs(i)

print(visit[1:11])

如何實現廣度優先遍歷(BFS)

bfs過程 一 訪問頂點v,並標記v為已經訪問 二 頂點v入佇列 三 如果佇列非空,進行執行,否則演算法結束 四 出佇列取得對頭頂點u,如果頂點未被訪問,就訪問該頂點,並標記該頂點為已經訪問 五 查詢u的第乙個鄰接節點w 六 如果w不存在,則轉到步驟三,否則迴圈執行 a.如果w沒有被訪問過,則先把w...

廣度優先遍歷

廣度優先遍歷 breadth first search 類似於對樹的層序遍歷 遍歷規則為 首先訪問初始點vi,並將其標記為已訪問過,接著訪問vi的所有未被訪問過的鄰接點,其訪問次序可以任意,假定依次為vi1,vi2,vit,並均標記為已訪問過,然後在按照vi1,vi2,vit的次序,訪問每乙個頂點的...

廣度優先遍歷

還是上面那道題 深度遍歷一般是用遞迴,深度不斷增加,廣度搜尋一般用佇列這樣的形式儲存東西 include include using namespace std struct note int main book 51 51 int next 4 2 int head,tail int i,j,k,...