কম্পিউটার

পাইথনে একটি বাইনারি ট্রি বিএসটি কি না তা পরীক্ষা করার জন্য প্রোগ্রাম


ধরুন আমাদের বাইনারি গাছ আছে; এটি একটি বাইনারি অনুসন্ধান গাছ কিনা তা আমাদের পরীক্ষা করতে হবে। আমরা জানি একটি BST এর নিম্নলিখিত বৈশিষ্ট্য রয়েছে -

  • এর বাম সাবট্রির সমস্ত নোড বর্তমান নোড মানের থেকে ছোট
  • এর ডান সাবট্রির সমস্ত নোড বর্তমান নোডের মান থেকে বড়
  • সব নোডের জন্য এই বৈশিষ্ট্যগুলি পুনরাবৃত্তিমূলকভাবে ধরে রাখে

সুতরাং, যদি ইনপুট মত হয়

পাইথনে একটি বাইনারি ট্রি বিএসটি কি না তা পরীক্ষা করার জন্য প্রোগ্রাম

তাহলে আউটপুট হবে True

এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -

  • x :=গাছের উপাদানের ক্রমবর্ধমান ট্রাভার্সাল সিকোয়েন্সের একটি তালিকা
  • যদি x সাজানো হয়, তাহলে
    • সত্য ফেরত দিন
  • মিথ্যে ফেরত দিন

আরো ভালোভাবে বোঝার জন্য আসুন নিচের বাস্তবায়ন দেখি -

উদাহরণ

class TreeNode:
   def __init__(self, data, left = None, right = None):
      self.data = data
      self.left = left
      self.right = right
class Solution:
   def solve(self, root):
      def inorder(root,l):
         if root is None:
            return
            inorder(root.left,l) l.append(root.data)
            inorder(root.right,l)
            l = []
            inorder(root,l)
         return l == sorted(l)
ob = Solution()
root = TreeNode(5)
root.left = TreeNode(1)
root.right = TreeNode(9) root.right.left = TreeNode(7) root.right.right = TreeNode(10) root.right.left.left = TreeNode(6) root.right.left.right = TreeNode(8) print(ob.solve(root))

ইনপুট

root = TreeNode(5)
root.left = TreeNode(1)
root.right = TreeNode(9)
root.right.left = TreeNode(7)
root.right.right = TreeNode(10)
root.right.left.left = TreeNode(6)
root.right.left.right = TreeNode(8)

আউটপুট

True

  1. প্রদত্ত গ্রাফটি পাইথনে দ্বিপক্ষীয় কি না তা পরীক্ষা করার জন্য প্রোগ্রাম

  2. একটি মান বিএসটি-তে আছে কিনা পাইথনে নেই তা পরীক্ষা করার জন্য প্রোগ্রাম

  3. একটি প্রদত্ত বাইনারি ট্রি পাইথনে হিপ কিনা তা পরীক্ষা করুন

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