जब एक टर्नरी ट्री से एक डबल लिंक्ड सूची बनाने की आवश्यकता होती है, तो एक 'नोड' वर्ग बनाने की आवश्यकता होती है। इस वर्ग में, दो विशेषताएँ हैं, डेटा जो नोड में मौजूद है, और लिंक की गई सूची के अगले नोड तक पहुँच।
एक और 'लिंक्ड_लिस्ट' क्लास बनाने की जरूरत है जिसमें एक इनिशियलाइज़ेशन फंक्शन होगा, और नोड के हेड को 'कोई नहीं' के लिए इनिशियलाइज़ किया जाएगा।
एक डबल लिंक्ड लिस्ट में, नोड्स में पॉइंटर्स होते हैं। वर्तमान नोड में अगले नोड के साथ-साथ पिछले नोड के लिए एक सूचक होगा। सूची में अंतिम मान का अगले सूचक में 'NULL' मान होगा। इसे दोनों दिशाओं में घुमाया जा सकता है।
दी गई डबल लिंक्ड सूची को टर्नरी ट्री में बदलने और नोड मानों को प्रिंट करने के लिए उपयोगकर्ता द्वारा कई विधियों को परिभाषित किया गया है।
नीचे उसी के लिए एक प्रदर्शन है -
उदाहरण
class Node: def __init__(self, my_data): self.right = None self.data = my_data self.left = None self.mid = None class ternary_tree_to_list: def __init__(self): self.root = None self.head = None self.tail = None def convert_ternary_tree_to_list(self, node_val): if node_val is None: return left = node_val.left; mid = node_val.mid; right = node_val.right; if (self.head == None) : self.head = self.tail = node_val node_val.middle = None self.head.left = None self.head.right = None else: self.tail.right = node_val node_val.left = self.tail node_val.mid = None self.tail = node_val self.tail.right = None self.convert_ternary_tree_to_list(left) self.convert_ternary_tree_to_list(mid) self.convert_ternary_tree_to_list(right) def print_it(self): curr = self.head if (self.head == None): print("The list is empty") return print("The nodes are :") while curr != None: print(curr.data) curr = curr.right my_instance = ternary_tree_to_list() print("Elements are being added to the list") my_instance.root = Node(10) my_instance.root.left = Node(14) my_instance.root.mid = Node(24) my_instance.root.right = Node(17) my_instance.root.left.left = Node(22) my_instance.root.left.mid = Node(23) my_instance.root.mid.left = Node(24) my_instance.root.mid.mid = Node(28) my_instance.root.mid.right = Node(30) my_instance.root.right.left = Node(45) my_instance.root.right.mid = Node(50) my_instance.root.right.right = Node(80) my_instance.convert_ternary_tree_to_list(my_instance.root) my_instance.print_it()
आउटपुट
Elements are being added to the list The nodes are : 10 14 22 23 24 24 28 30 17 45 50 80
स्पष्टीकरण
- 'नोड' वर्ग बनाया गया है।
- आवश्यक विशेषताओं वाला एक और वर्ग बनाया गया है।
- 'convert_ternary_tree_to_list' नाम की एक अन्य विधि परिभाषित की गई है, जिसका उपयोग दी गई दोगुनी लिंक की गई सूची को टर्नरी ट्री में बदलने के लिए किया जाता है।
- 'print_it' नाम की एक अन्य विधि परिभाषित की गई है, जो सर्कुलर लिंक्ड सूची के नोड्स को प्रदर्शित करती है।
- 'ternary_tree_to_list' वर्ग का एक ऑब्जेक्ट बनाया जाता है, और दोहरी लिंक की गई सूची को टर्नरी ट्री में बदलने के तरीकों को उस पर बुलाया जाता है।
- एक 'init' विधि को परिभाषित किया गया है, कि रूट, हेड, और टेल नोड्स डबल लिंक्ड लिस्ट का कोई नहीं से जुड़ा हुआ है।
- 'convert_ternary_tree_to_list' विधि कहलाती है।
- यह डबल लिंक्ड सूची के माध्यम से पुनरावृति करता है, और इसे एक टर्नरी ट्री में परिवर्तित करता है।
- यह 'print_it' पद्धति का उपयोग करके कंसोल पर प्रदर्शित होता है।