जब ट्री के सभी नोड्स का योग खोजना हो, तो एक क्लास बनाई जाती है जिसमें रूट नोड सेट करने, ट्री में एलिमेंट्स जोड़ने, विशिष्ट एलिमेंट खोजने और ट्री के एलिमेंट्स को जोड़कर योग खोजने आदि के लिए मेथड्स होते हैं। क्लास का एक इंस्टेंस बनाकर इन मेथड्स को एक्सेस और उपयोग किया जा सकता है।
उदाहरण
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("ग्राफ में 5 वर्टेक्स हैं")
print("0-->1")
print("1-->2")
print("2-->0")
print("2-->3")
print("2-->1")
print("क्या साइकिल है?")
print("हां")
else:
print("ग्राफ में 5 वर्टेक्स हैं")
print("0-->1")
print("1-->2")
print("2-->0")
print("2-->3")
print("2-->1")
print("क्या साइकिल है?")
print("नहीं")
आउटपुट
ग्राफ में 5 वर्टेक्स हैं 0-->1 1-->2 2-->0 2-->3 2-->1 क्या साइकिल है? हां
व्याख्या
आवश्यक पैकेज आयात किए जाते हैं।
'add_edge' नामक एक अन्य मेथड परिभाषित की जाती है जो ग्राफ में नोड्स जोड़ने में मदद करती है।
'detect_cycle' नामक एक मेथड परिभाषित की जाती है जो यह निर्धारित करने में मदद करती है कि ग्राफ के कंपोनेंट्स कनेक्ट होने पर साइकिल बनती है या नहीं।
'cycle_disconnected' नामक एक अन्य मेथड परिभाषित की जाती है जो यह निर्धारित करने में मदद करती है कि साइकिल कनेक्टेड है या नहीं।
'add_edge' मेथड का उपयोग करके एलिमेंट्स को ग्राफ में जोड़ा जाता है।
इसे कंसोल पर प्रदर्शित किया जाता है।
'cycle_disconnected' मेथड को कॉल किया जाता है और आउटपुट कंसोल पर प्रदर्शित होता है।