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

पायथन में संतुलित बाइनरी ट्री

एक बाइनरी ट्री में, प्रत्येक नोड में दो बच्चे होते हैं, अर्थात बायाँ बच्चा और दायाँ बच्चा। मान लीजिए कि हमारे पास एक बाइनरी ट्री है और हमें यह जांचना है कि ट्री संतुलित है या नहीं। एक बाइनरी ट्री को संतुलित कहा जाता है यदि लेफ्ट सबट्री और राइट सबट्री की ऊंचाई का अंतर '1' से कम या उसके बराबर हो।

उदाहरण

इनपुट-1:

<मजबूत> पायथन में संतुलित बाइनरी ट्री

आउटपुट:

सच

स्पष्टीकरण:

दिया गया बाइनरी ट्री [1,2,3, NULL, NULL, 6, 7] है। इसके बाएँ उप-वृक्ष और दाएँ उप-वृक्ष की ऊँचाई का अंतर '1' के बराबर है, इस प्रकार यह एक ऊँचाई संतुलित वृक्ष है।

इनपुट-2:

<मजबूत> पायथन में संतुलित बाइनरी ट्री

आउटपुट:

गलत

स्पष्टीकरण:

दिया गया बाइनरी ट्री [1,2,3,4, NULL, NULL, NULL,5] है। इसके बाएँ उप-वृक्ष और दाएँ उप-वृक्ष की ऊँचाई का अंतर '1' से अधिक है, इस प्रकार यह ऊँचाई संतुलित वृक्ष नहीं है।

इस समस्या को हल करने का तरीका

इस समस्या को हल करने के लिए पुनरावर्ती दृष्टिकोण बाएं सबट्री और राइट सबट्री की ऊंचाई को ढूंढना है और फिर जांचना है कि क्या (ऊंचाई (बाएं सबस्ट्री) - ऊंचाई (राइटसबट्री) <=1) और तदनुसार सही या गलत लौटाएं। फिर, हम बाइनरी ट्री के प्रत्येक नोड के लिए पुनरावर्ती रूप से जाँच करेंगे।

  • एक बाइनरी ट्री के नोड्स का इनपुट लें।
  • पेड़ की ऊंचाई ज्ञात करने के लिए एक फ़ंक्शन परिभाषित करें।
  • पुनरावर्ती रूप से जांचने के लिए एक बूलियन फ़ंक्शन यदि बाएं सबट्री और राइट सबट्री की ऊंचाई का अंतर '1' से अधिक नहीं है, तो ट्रू लौटाएं।
  • परिणाम लौटाएं।

उदाहरण

क्लास ट्रीनोड:def __init__(self, data):self.data =data self.left =self.right =कोई नहीं# बाएं सबट्री और राइट सबट्रीक्लास ऊंचाई की ऊंचाई खोजने के लिए funtion:def __init__(self):self .height =0# फ़ंक्शन यह जांचने के लिए कि क्या ट्री संतुलित है या notdef isBalanced(root):lh =height() rh =height() यदि रूट कोई नहीं है:रिटर्न ट्रू रिटर्न ((abs(lh.height - rh.height)) <=1) और isBalanced(root.left) and isBalanced(root.right) )root =treenode(1)root.left =treenode(2)root.right =treenode(3)root.left.left =noneroot.left .दायाँ =कोई नहीं। 

उपरोक्त कोड को चलाने से आउटपुट इस प्रकार उत्पन्न होगा,

आउटपुट

संतुलित

दिया गया बाइनरी ट्री [1, 2, 3, NULL, NULL, 6, 7]। इसके बाएँ उप-वृक्ष और दाएँ उप-वृक्ष की ऊँचाई का अंतर '1' के बराबर है, इस प्रकार यह एक ऊँचाई संतुलित वृक्ष है।


  1. पायथन में बाइनरी ट्री का व्यास

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

  1. पायथन में बाइनरी ट्री को उल्टा करें

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

  1. पायथन में बाइनरी ट्री की अधिकतम गहराई

    मान लीजिए कि हमारे पास एक बाइनरी ट्री है। हमें उस वृक्ष की अधिकतम गहराई ज्ञात करनी है। एक पेड़ की अधिकतम गहराई नोड्स की अधिकतम संख्या है जो सबसे लंबे पथ का उपयोग करके जड़ से पत्ती तक पहुंचने के लिए ट्रैवर्स की जाती है। मान लीजिए पेड़ नीचे जैसा है। गहराई यहां 3 होगी। इसे हल करने के लिए, हम इन चरणो