เมื่อจำเป็นต้องค้นหาผลรวมของโหนดทั้งหมดของต้นไม้ คลาสจะถูกสร้างขึ้นและประกอบด้วยวิธีการตั้งค่าโหนดรูท เพิ่มองค์ประกอบให้กับต้นไม้ ค้นหาองค์ประกอบเฉพาะ และเพิ่มองค์ประกอบของต้นไม้ หาผลรวมและอื่น ๆ สามารถสร้างอินสแตนซ์ของคลาสเพื่อเข้าถึงและใช้เมธอดเหล่านี้ได้
ด้านล่างนี้เป็นการสาธิตสิ่งเดียวกัน -
ตัวอย่าง
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" จะเพิ่มโหนดให้กับกราฟ
-
รายการถูกกำหนดและแสดงบนคอนโซล
-
มีการเรียกเมธอดและเอาต์พุตจะแสดงบนคอนโซล