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

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


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

उदाहरण

इनपुट-1:

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

आउटपुट:

True

व्याख्या:

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

इनपुट-2:

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

आउटपुट:

False

व्याख्या:

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

समस्या हल करने का दृष्टिकोण

इस समस्या को हल करने का पुनरावर्ती दृष्टिकोण है: बाएं सबट्री और दाएं सबट्री की ऊंचाई ज्ञात करें, फिर जांचें कि क्या |ऊंचाई(बाएं) - ऊंचाई(दाएं)| ≤ 1 है, और तदनुसार True या False लौटाएं। फिर बाइनरी ट्री के प्रत्येक नोड के लिए पुनरावर्ती रूप से जांच करें।

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

कोड उदाहरण

class TreeNode:
    def __init__(self, data):
        self.data = data
        self.left = self.right = None

# ट्री की ऊंचाई ज्ञात करने के लिए क्लास
class Height:
    def __init__(self):
        self.height = 0

# ट्री संतुलित है या नहीं जांचने का फ़ंक्शन
def isBalanced(root):
    lh = Height()
    rh = Height()
    if root is None:
        return True
    return (abs(lh.height - rh.height) <= 1) and isBalanced(root.left) and isBalanced(root.right)

# ट्री निर्माण
root = TreeNode(1)
root.left = TreeNode(2)
root.right = TreeNode(3)
root.left.left = None
root.left.right = None
root.right.left = TreeNode(6)
root.right.right = TreeNode(7)

if isBalanced(root):
    print("संतुलित")
else:
    print("असंतुलित")

आउटपुट

संतुलित

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

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

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

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

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

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

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