কম্পিউটার

পাইথনে সুষম বাইনারি ট্রি


একটি বাইনারি গাছে, প্রতিটি নোডে দুটি শিশু থাকে, যেমন বাম শিশু এবং ডান শিশু। ধরা যাক আমাদের একটি বাইনারি গাছ আছে এবং আমাদের পরীক্ষা করতে হবে গাছটি সুষম কিনা। একটি বাইনারি গাছকে ভারসাম্য বলা হয় যদি বাম সাবট্রি এবং ডান সাবট্রির উচ্চতার পার্থক্য '1' এর কম বা সমান হয়।

উদাহরণ

ইনপুট-1:

পাইথনে সুষম বাইনারি ট্রি

আউটপুট:

True

ব্যাখ্যা:

প্রদত্ত বাইনারি ট্রি হল [1,2,3, NULL, NULL, 6, 7]। এর বাম সাবট্রি এবং ডান সাবট্রির উচ্চতার পার্থক্য '1' এর সমান, এইভাবে এটি একটি উচ্চতা ভারসাম্যপূর্ণ গাছ।

ইনপুট-2:

পাইথনে সুষম বাইনারি ট্রি

আউটপুট:

False

ব্যাখ্যা:

প্রদত্ত বাইনারি ট্রি হল [1,2,3,4, NULL, NULL,NULL,5]। এর বাম সাবট্রি এবং ডান সাবট্রির উচ্চতার পার্থক্য '1' এর চেয়ে বেশি, তাই এটি একটি উচ্চতা ভারসাম্যপূর্ণ গাছ নয়।

এই সমস্যা সমাধানের পদ্ধতি

এই সমস্যাটি সমাধান করার জন্য পুনরাবৃত্তিমূলক পদ্ধতি হল বাম সাবট্রি এবং ডান সাবট্রির উচ্চতা খুঁজে বের করা এবং তারপর পরীক্ষা করা যদি (উচ্চতা(বাম গাছ) - উচ্চতা(রাইটসাবট্রি) <=1) এবং সেই অনুযায়ী সত্য বা মিথ্যা ফেরত দেয়। তারপর, আমরা বাইনারি গাছের প্রতিটি নোডের জন্য বারবার পরীক্ষা করব।

  • একটি বাইনারি ট্রির নোডের ইনপুট নিন।
  • গাছের উচ্চতা বের করার জন্য একটি ফাংশন সংজ্ঞায়িত করুন।
  • বাম সাবট্রি এবং ডান সাবট্রির উচ্চতার পার্থক্য '1'-এর বেশি না হলে বারবার চেক করার জন্য একটি বুলিয়ান ফাংশন, তারপর ট্রু রিটার্ন করুন।
  • ফলাফল ফেরত দিন।

উদাহরণ

class treenode:
   def __init__(self, data):
      self.data = data
      self.left = self.right = None
# funtion to find the height of the left subtree and right subtree
class height:
   def __init__(self):
      self.height = 0
# function to check if the tree is balanced or not
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("Balanced")
else:
   print("Not Balanced")

উপরের কোডটি চালানোর ফলে আউটপুট তৈরি হবে,

আউটপুট

Balanced

প্রদত্ত বাইনারি ট্রি [1, 2, 3, NULL, NULL, 6, 7]। এর বাম সাবট্রি এবং ডান সাবট্রির উচ্চতার পার্থক্য '1' এর সমান, এইভাবে এটি একটি উচ্চতা ভারসাম্যপূর্ণ গাছ।


  1. Python-এ Binary Tree Inorder Traversal

  2. পাইথনে বাইনারি ট্রি ব্যাস

  3. পাইথনে বাইনারি ট্রি ইনভার্ট করুন

  4. পাইথনে বাইনারি গাছের সর্বোচ্চ গভীরতা