কম্পিউটার

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


ধরুন আমাদের একটি বাইনারি গাছ আছে; আমাদের পরীক্ষা করতে হবে সব পাতা একই স্তরে আছে কি না।

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

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

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

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

  • একটি ফাংশন dfs() সংজ্ঞায়িত করুন। এটি রুট নেবে, d

  • যদি রুট শূন্য না হয়, তাহলে

    • যদি রুটের বাম অংশ নাল হয় এবং রুটের ডানদিকে শূন্য হয়, তাহলে

      • গভীরতার শেষে d ঢোকান

    • অন্যথায়,

      • dfs(রুটের বামে, d + 1)

      • dfs(রুটের ডানদিকে, d + 1)

  • প্রধান পদ্ধতি থেকে, নিম্নলিখিতগুলি করুন -

  • গভীরতা :=একটি নতুন তালিকা

  • dfs(root, 0)

  • গভীরতার শুধুমাত্র একটি মান থাকলে সত্য ফেরত দিন

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

উদাহরণ

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

class Solution:
   def solve(self, root):
      self.depth = []
      self.dfs(root, 0)
      return len(set(self.depth)) == 1
   def dfs(self, root, depth):
      if root:
         if not root.left and not root.right:
            self.depth.append(depth)
         else:
            self.dfs(root.left, depth + 1)
            self.dfs(root.right, depth + 1)
ob = Solution()
root = TreeNode(5)
root.left = TreeNode(4)
root.left.left = TreeNode(2)
root.right = TreeNode(10)
root.right.left = TreeNode(7)
root.right.right = TreeNode(15)
print(ob.solve(root))

ইনপুট

root = TreeNode(5)
root.left = TreeNode(4)
root.left.left = TreeNode(2)
root.right = TreeNode(10)
root.right.left = TreeNode(7)
root.right.right = TreeNode(15)

আউটপুট

True

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

  2. পাইথনে একটি গাছের ক্রমক্রম প্যালিনড্রোম কিনা তা পরীক্ষা করার জন্য প্রোগ্রাম

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

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