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

इनऑर्डर ट्रैवर्सल का उपयोग करके ट्री में सबसे बड़ा मान खोजने का पायथन प्रोग्राम


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

क्लास का एक इंस्टेंस बनाया जाता है और इसका उपयोग मेथड्स को एक्सेस करने के लिए किया जा सकता है।

उदाहरण

class BinaryTree_Struct:
    def __init__(self, key=None):
        self.key = key
        self.left = None
        self.right = None
    def set_root(self, key):
        self.key = key
    def inorder_traversal_largest(self):
        largest = []
        self.inorder_largest_helper_fun(largest)
        return largest[0]
    def inorder_largest_helper_fun(self, largest):
        if self.left is not None:
            self.left.inorder_largest_helper_fun(largest)
        if largest == []:
            largest.append(self.key)
        elif largest[0] < self.key:
            largest[0] = self.key
        if self.right is not None:
            self.right.inorder_largest_helper_fun(largest)
    def insert_to_left(self, new_node):
        self.left = new_node
    def insert_to_right(self, new_node):
        self.right = new_node
    def search_elem(self, key):
        if self.key == key:
            return self
        if self.left is not None:
            temp = self.left.search_elem(key)
            if temp is not None:
                return temp
        if self.right is not None:
            temp = self.right.search_elem(key)
            return temp
        return None

my_instance = None
print('मेन्यू (यह मानता है कोई डुप्लिकेट कीज़ नहीं)')
print('insert  at root')
print('insert  left of ')
print('insert  right of ')
print('largest')
print('quit')
while True:
    my_input = input('आप कौन सा ऑपरेशन करेंगे? ').split()
    operation = my_input[0].strip().lower()
    if operation == 'insert':
        data = int(my_input[1])
        new_node = BinaryTree_Struct(data)
        suboperation = my_input[2].strip().lower()
        if suboperation == 'at':
            my_instance = new_node
        else:
            position = my_input[4].strip().lower()
            key = int(position)
            ref_node = None
            if my_instance is not None:
                ref_node = my_instance.search_elem(key)
            if ref_node is None:
                print('ऐसी कोई की नहीं है')
                continue
            if suboperation == 'left':
                ref_node.insert_to_left(new_node)
            elif suboperation == 'right':
                ref_node.insert_to_right(new_node)
    elif operation == 'largest':
        if my_instance is None:
            print('ट्री खाली है')
        else:
            print('सबसे बड़ा एलिमेंट है: {}'.format(my_instance.inorder_traversal_largest()))
    elif operation == 'quit':
        break

आउटपुट

मेन्यू (यह मानता है कोई डुप्लिकेट कीज़ नहीं)
insert  at root
insert  left of 
insert  right of 
largest
quit
आप कौन सा ऑपरेशन करेंगे? insert 8 at root
आप कौन सा ऑपरेशन करेंगे? insert 9 left of 8
आप कौन सा ऑपरेशन करेंगे? insert 4 right of 8
आप कौन सा ऑपरेशन करेंगे? largest
सबसे बड़ा एलिमेंट है: 9
आप कौन सा ऑपरेशन करेंगे? >
बाहर निकलने के लिए quit() या Ctrl-D (यानी EOF) का उपयोग करें

व्याख्या

  • आवश्यक एट्रिब्यूट्स के साथ 'BinaryTree_struct' क्लास बनाई जाती है।

  • इसमें एक 'init' फंक्शन होता है जिसका उपयोग लेफ्ट और राइट नोड्स को 'None' सेट करने के लिए किया जाता है।

  • इसमें एक 'set_root' मेथड होती है जो बाइनरी ट्री के रूट को सेट करने में मदद करती है।

  • 'inorder_traversal_largest' नामक एक अन्य मेथड जो रीकर्सन का उपयोग करके इनऑर्डर ट्रैवर्सल करती है।

  • इसलिए इसके साथ एक हेल्पर फंक्शन परिभाषित की जाती है।

  • 'insert_to_right' नामक एक अन्य मेथड परिभाषित की जाती है जो रूट नोड के दाईं ओर एलिमेंट जोड़ने में मदद करती है।

  • 'insert_to_left' नामक एक मेथड परिभाषित की जाती है जो रूट नोड के बाईं ओर एलिमेंट जोड़ने में मदद करती है।

  • 'search_elem' नामक एक मेथड परिभाषित की जाती है जो किसी विशिष्ट एलिमेंट को खोजने में मदद करती है।

  • 'BinaryTree_struct' क्लास का एक ऑब्जेक्ट बनाया जाता है।

  • उपयोगकर्ता इनपुट उस ऑपरेशन के लिए लिया जाता है जिसे करने की आवश्यकता है।

  • उपयोगकर्ता की पसंद के आधार पर ऑपरेशन किया जाता है।

  • प्रासंगिक आउटपुट कंसोल पर प्रदर्शित होता है।


  1. Python में n-ary ट्री का व्यास खोजने का प्रोग्राम Python में n-ary ट्री का व्यास खोजने का प्रोग्राम

    मान लीजिए, हमें एक n-ary ट्री दिया गया है और ट्री का व्यास निर्धारित करने के लिए कहा गया है। ट्री का व्यास ट्री के किन्हीं दो लीफ नोड्स के बीच मौजूद सबसे लंबा पथ है। हमें पूर्णांक मान वापस करना है जो ट्री के व्यास को दर्शाता है। इसलिए, यदि इनपुट निम्न ट्री है: तो आउटपुट 3 होगा। इस n-ary ट्री का व्

  1. Python में n-ary ट्री का रूट खोजने का प्रोग्राम Python में n-ary ट्री का रूट खोजने का प्रोग्राम

    मान लीजिए, हमें एक n-ary ट्री के नोड्स एक सरणी में दिए गए हैं। हमें ट्री को पुनर्निर्मित करके उसका रूट नोड ढूंढना और वापस करना है। वापस किए गए नोड से पूरा ट्री प्रीऑर्डर नोटेशन में प्रदर्शित करना है। इसलिए, यदि इनपुट निम्न ट्री है: तो आउटपुट होगा: [14, 27, 32, 42, 56, 65] हम ट्री के प्रीऑर्डर ट्रै

  1. Python प्रोग्राम से ऐरे में सबसे बड़ा तत्व खोजना Python प्रोग्राम से ऐरे में सबसे बड़ा तत्व खोजना

    इस लेख में, हम नीचे दिए गए समस्या कथन के समाधान के बारे में जानेंगे। समस्या कथन - हमें एक ऐरे दिया गया है, हमें ऐरे के सबसे बड़े तत्व की गणना करने की आवश्यकता है। यहां हम ब्रूट-फोर्स दृष्टिकोण का उपयोग करते हैं जिसमें हम पूरे लूप को पार करके और तत्व प्राप्त करके सबसे बड़ा तत्व निकालते हैं। हम नीच