当需要查找树的所有节点的总和时,将创建一个类,该类包含设置根节点,向树中添加元素,搜索特定元素以及将树中的元素添加至的方法。找到总和,依此类推。可以创建该类的实例来访问和使用这些方法。
以下是相同的演示-
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("来自的可达节点 ", 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)
输出结果
来自的可达节点 2 are 2 1 3 4 来自的可达节点 4 are 2 1 3 4 来自的可达节点 5 are 5 6 7 来自的可达节点 7 are 5 6 7
所需的软件包已导入。
定义了一个名为“ add_edge”的方法,该方法有助于将元素添加到树中。
“ BFS_operation”方法有助于使用广度优先搜索方法遍历树。
定义了一个名为“ displayReachableNodes”的方法,该方法有助于显示可以从特定节点访问的节点。
定义了一个名为“ findReachableNodes”的方法,该方法遍历节点,并对元素执行“ BFS_operation”。
'add_edge'方法将节点添加到图中。
列表已定义并显示在控制台上。
调用该方法,并在控制台上显示输出。