เมื่อจำเป็นต้องค้นหาผลรวมของโหนดทั้งหมดของต้นไม้ คลาสจะถูกสร้างขึ้นและประกอบด้วยวิธีการตั้งค่าโหนดรูท เพิ่มองค์ประกอบให้กับต้นไม้ ค้นหาองค์ประกอบเฉพาะ และเพิ่มองค์ประกอบของต้นไม้ หาผลรวมและอื่น ๆ สามารถสร้างอินสแตนซ์ของคลาสเพื่อเข้าถึงและใช้เมธอดเหล่านี้ได้
ด้านล่างนี้เป็นการสาธิตสิ่งเดียวกัน -
ตัวอย่าง
from collections import deque def add_edge(adj: list, u, v): adj[u].append(v) adj[v].append(u) def detect_cycle(adj: list, s, V, visited: list): parent = [-1] * V q = deque() visited[s] = True q.append(s) while q != []: u = q.pop() for v in adj[u]: if not visited[v]: visited[v] = True q.append(v) parent[v] = u elif parent[u] != v: return True return False def cycle_disconnected(adj: list, V): visited = [False] * V for i in range(V): if not visited[i] and detect_cycle(adj, i, V, visited): return True return False if __name__ == "__main__": V = 5 adj = [[] for i in range(V)] add_edge(adj, 0, 1) add_edge(adj, 1, 2) add_edge(adj, 2, 0) add_edge(adj, 2, 3) add_edge(adj, 2, 1) if cycle_disconnected(adj, V): print("There are 5 vertices in the graph") print("0-->1") print("1-->2") print("2-->0") print("2-->3") print("2-->1") print("Is there a cycle ?") print("Yes") else: print("There are 5 vertices in the graph") print("0-->1") print("1-->2") print("2-->0") print("2-->3") print("2-->1") print("Is there a cycle ?") print("Yes") print("No")
ผลลัพธ์
There are 5 vertices in the graph 0-->1 1-->2 2-->0 2-->3 2-->1 Is there a cycle ? Yes
คำอธิบาย
-
แพ็คเกจที่จำเป็นจะถูกนำเข้า
-
มีการกำหนดวิธีการอื่นที่เรียกว่า "add_edge" ซึ่งช่วยเพิ่มโหนดให้กับกราฟ
-
มีการกำหนดวิธีการชื่อ 'detect_cycle' ที่ช่วยตรวจสอบว่าวงจรเกิดขึ้นเมื่อส่วนประกอบต่างๆ ของกราฟเชื่อมต่อกันหรือไม่
-
มีการกำหนดวิธีอื่นที่ชื่อว่า 'cycle_disconnected' ซึ่งช่วยระบุว่าวงจรนั้นเป็นวงจรที่เชื่อมต่อหรือไม่
-
เพิ่มองค์ประกอบลงในกราฟโดยใช้วิธี "add_edge"
-
จะแสดงบนคอนโซล
-
วิธีการ 'cycle_disconnected' ถูกเรียกและผลลัพธ์จะแสดงบนคอนโซล