Python程式:使用BFS查詢圖中從一個節點可達的所有節點
當需要找到樹中所有節點的總和時,會建立一個類,其中包含設定根節點、向樹中新增元素、搜尋特定元素以及新增樹的元素以查詢總和等方法。可以建立類的例項來訪問和使用這些方法。
以下是相同內容的演示 -
示例
from collections import deque
def add_edge(v, w):
global visited_node, adj
adj[v].append(w)
adj[w].append(v)
def BFS_operation(component_num, src):
global visited_node, adj
queue = deque()
queue.append(src)
visited_node[src] = 1
reachableNodes = []
while (len(queue) > 0):
u = queue.popleft()
reachableNodes.append(u)
for itr in adj[u]:
if (visited_node[itr] == 0):
visited_node[itr] = 1
queue.append(itr)
return reachableNodes
def displayReachableNodes(m):
for i in m:
print(i, end = " ")
print()
def findReachableNodes(my_list, n):
global V, adj, visited_node
a = []
component_num = 0
for i in range(n):
u = my_list[i]
if (visited_node[u] == 0):
component_num += 1
a = BFS_operation(component_num, u)
print("The reachable nodes from ", u, " are")
displayReachableNodes(a)
V = 7
adj = [[] for i in range(V + 1)]
visited_node = [0 for i in range(V + 1)]
add_edge(1, 2)
add_edge(2, 3)
add_edge(3, 4)
add_edge(3, 1)
add_edge(5, 6)
add_edge(5, 7)
my_list = [ 2, 4, 5, 7 ]
arr_len = len(my_list)
findReachableNodes(my_list, arr_len)輸出
The reachable nodes from 2 are 2 1 3 4 The reachable nodes from 4 are 2 1 3 4 The reachable nodes from 5 are 5 6 7 The reachable nodes from 7 are 5 6 7
解釋
匯入所需的包。
定義了一個名為“add_edge”的方法,用於幫助向樹中新增元素。
“BFS_operation”方法使用廣度優先搜尋方法遍歷樹。
定義了一個名為“displayReachableNodes”的方法,用於顯示可以從特定節點到達的節點。
定義了一個名為“findReachableNodes”的方法,它迭代節點並對元素執行“BFS_operation”。
“add_edge”方法將節點新增到圖中。
定義一個列表並在控制檯上顯示。
呼叫該方法並在控制檯上顯示輸出。
廣告
資料結構
網路
RDBMS
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP