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