Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> Python

पायथन प्रोग्राम: लिंक्ड लिस्ट का उपयोग करके बाइनरी ट्री इम्प्लीमेंट करना


जब लिंक्ड लिस्ट का उपयोग करके बाइनरी ट्री डेटा स्ट्रक्चर इम्प्लीमेंट करना होता है, तो रूट नोड सेट करने, इन-ऑर्डर ट्रैवर्सल करने, रूट नोड के बाईं ओर एलिमेंट इन्सर्ट करने, रूट नोड के दाईं ओर एलिमेंट इन्सर्ट करने और वैल्यूज़ खोजने के लिए मेथड्स डिफाइन की जाती हैं।

उदाहरण

class BinaryTree_structure:
    def __init__(self, key=None):
        self.key = key
        self.left = None
        self.right = None

    def set_root(self, key):
        self.key = key

    def in_order_traversal(self):
        if self.left is not None:
            self.left.in_order_traversal()
        print(self.key, end=' ')
        if self.right is not None:
            self.right.in_order_traversal()

    def insert_left(self, new_node):
        self.left = new_node

    def insert_right(self, new_node):
        self.right = new_node

    def search_val(self, key):
        if self.key == key:
            return self
        if self.left is not None:
            temp = self.left.search_val(key)
            if temp is not None:
                return temp
        if self.right is not None:
            temp = self.right.search_val(key)
            return temp
        return None

btree = None
print('मेन्यू (यह मानता है कि कोई डुप्लिकेट कीज़ नहीं हैं)')
print('insert  at root')
print('insert  left of ')
print('insert  right of ')
print('quit')
while True:
    print('बाइनरी ट्री का इनऑर्डर ट्रैवर्सल: ', end='')
    if btree is not None:
        btree.in_order_traversal()
    print()
    do = input('आप क्या करना चाहेंगे? ').split()
    operation = do[0].strip().lower()
    if operation == 'insert':
        data = int(do[1])
        new_node = BinaryTree_structure(data)
        sub_op = do[2].strip().lower()
        if sub_op == 'at':
            btree = new_node
        else:
            position = do[4].strip().lower()
            key = int(position)
            ref_node = None
            if btree is not None:
                ref_node = btree.search_val(key)
            if ref_node is None:
                print('ऐसी कोई की मौजूद नहीं है')
                continue
            if sub_op == 'left':
                ref_node.insert_left(new_node)
            elif sub_op == 'right':
                ref_node.insert_right(new_node)
    elif operation == 'quit':
        break

आउटपुट

मेन्यू (यह मानता है कि कोई डुप्लिकेट कीज़ नहीं हैं)
insert  at root
insert  left of 
insert  right of 
quit
बाइनरी ट्री का इनऑर्डर ट्रैवर्सल: 
आप क्या करना चाहेंगे? insert 45 at root
बाइनरी ट्री का इनऑर्डर ट्रैवर्सल: 45
आप क्या करना चाहेंगे? insert 78 left of 45
बाइनरी ट्री का इनऑर्डर ट्रैवर्सल: 78 45
आप क्या करना चाहेंगे? insert 90 right of 45
बाइनरी ट्री का इनऑर्डर ट्रैवर्सल: 78 45 90
आप क्या करना चाहेंगे? quit

व्याख्या

  • 'BinaryTree_structure' क्लास बनाई गई है।

  • इसमें एक 'set_root' फंक्शन है जो ट्री के लिए रूट वैल्यू सेट करने में मदद करता है।

  • 'in_order_traversal' नामक एक मेथड डिफाइन की गई है, जो ट्री को 'लेफ्ट->नोड->राइट' क्रम में ट्रैवर्स करने में मदद करती है।

  • 'insert_left' नामक एक अन्य मेथड डिफाइन की गई है, जो रूट वैल्यू के बाईं ओर एलिमेंट जोड़ने में मदद करती है।

  • 'insert_right' नामक एक अन्य मेथड डिफाइन की गई है, जो रूट वैल्यू के दाईं ओर एलिमेंट जोड़ने में मदद करती है।

  • 'search_val' नामक एक अन्य मेथड डिफाइन की गई है, जो स्टैक के टॉप से वैल्यू डिलीट करने और डिलीट की गई वैल्यू रिटर्न करने में मदद करती है।

  • चार विकल्प दिए गए हैं, जैसे 'insert at root', 'insert to left of', 'insert to right of' और 'quit'।

  • यूज़र के इनपुट/चॉइस के आधार पर, संबंधित ऑपरेशन किए जाते हैं।

  • यह आउटपुट कंसोल पर डिस्प्ले किया जाता है।


  1. Python से गलत बाइनरी ट्री को कैसे ठीक करें (एरोनियस राइट पॉइंटर)? Python से गलत बाइनरी ट्री को कैसे ठीक करें (एरोनियस राइट पॉइंटर)?

    BFS से एरोनियस राइट चाइल्ड पॉइंटर (सेम लेवल पर पॉइंट करता हुआ) ढूंढें और उस नोड को उसके डिसेंडेंट्स सहित डिलीट करें (टारगेट नोड छोड़कर)। एल्गोरिदम क्यू से BFS ट्रैवर्सल (collections.deque)। parent (पैरेंट, is_left)। visited सेट से डुप्लिकेट विजिट डिटेक्ट करें (एरोनियस लिंक)। जब डुप्लिकेट मिले: ग्रै

  1. पायथन में लिंक्ड लिस्ट को जिग-जैग बाइनरी ट्री में बदलने का प्रोग्राम पायथन में लिंक्ड लिस्ट को जिग-जैग बाइनरी ट्री में बदलने का प्रोग्राम

    मान लीजिए हमारे पास एक सिंगली लिंक्ड लिस्ट है, हमें इसे निम्न नियमों का उपयोग करके बाइनरी ट्री पथ में बदलना है:लिंक्ड लिस्ट का हेड रूट है।प्रत्येक बाद का नोड पैरेंट का बायां बच्चा है यदि उसका मान कम है, अन्यथा यह दायां बच्चा होगा।उदाहरण के लिए, यदि इनपुट [2,1,3,4,0,5] है, तो आउटपुट ट्री होगा:समाधान

  1. Python में दिशाओं की सूची का उपयोग करके बाइनरी ट्री को पार करने का प्रोग्राम Python में दिशाओं की सूची का उपयोग करके बाइनरी ट्री को पार करने का प्रोग्राम

    मान लीजिए हमारे पास एक बाइनरी ट्री और moves नामक स्ट्रिंग्स की एक सूची है जिसमें R (दाएं), L (बाएं) और U (ऊपर) शामिल हैं। रूट से शुरू करके, हमें moves में प्रत्येक चाल को निष्पादित करके ट्री को पार करना होगा जहां: R दाएं चाइल्ड को पार करने का संकेत देता है। L बाएं चाइल्ड को पार करने का संकेत देता ह