एक बाइनरी ट्री में, प्रत्येक नोड में दो बच्चे होते हैं, अर्थात बायाँ बच्चा और दायाँ बच्चा। मान लीजिए कि हमारे पास एक बाइनरी ट्री है और हमें यह जांचना है कि ट्री संतुलित है या नहीं। एक बाइनरी ट्री को संतुलित कहा जाता है यदि लेफ्ट सबट्री और राइट सबट्री की ऊंचाई का अंतर '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' के बराबर है, इस प्रकार यह एक ऊँचाई संतुलित वृक्ष है।