কম্পিউটার

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


ধরুন আমাদের একটি বাইনারি ট্রি আছে যেখানে প্রতিটি নোডে 0-9 পর্যন্ত একটি ডিজিট রয়েছে, আমাদের চেক করতে হবে এর ইন-অর্ডার ট্রাভার্সাল প্যালিনড্রোম কিনা।

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

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

তাহলে আউটপুট হবে True, কারণ এর ইনঅর্ডার ট্রাভার্সাল হল [2,6,10,6,2]।

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

  • যদি রুট নাল হয়, তাহলে
    • সত্য ফেরান
  • স্ট্যাক :=একটি নতুন স্ট্যাক
  • curr :=root
  • অনুক্রম :=একটি নতুন তালিকা
  • স্ট্যাক খালি না থাকা অবস্থায় বা curr শূন্য না হলে
      করুন
    • যদিও curr নাল না হয়, do
      • স্ট্যাকের মধ্যে curr পুশ করুন
      • curr :=curr এর বাম
    • নোড :=স্ট্যাক থেকে পপ করা উপাদান
    • ইনঅর্ডারের শেষে নোডের মান সন্নিবেশ করান
    • curr :=নোডের ডানদিকে
  • সত্য প্রত্যাবর্তন করুন যখন ইনঅর্ডার বিপরীত ক্রমে ইনঅর্ডারের মতো হয়, অন্যথায় মিথ্যা৷

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

উদাহরণ

class TreeNode:
   def __init__(self, data, left = None, right = None):
      self.val = data
      self.left = left
      self.right = right
class Solution:
   def solve(self, root):
      if not root:
         return True
      stack = []
      curr = root
      inorder = []
      while stack or curr:
         while curr:
            stack.append(curr)
            curr = curr.left
         node = stack.pop() inorder.append(node.val)
         curr = node.right
      return inorder == inorder[::-1]
ob = Solution()
root = TreeNode(6)
root.left = TreeNode(2)
root.right = TreeNode(6)
root.right.left = TreeNode(10)
root.right.right = TreeNode(2)
print(ob.solve(root))

ইনপুট

root = TreeNode(6)
root.left = TreeNode(2)
root.right = TreeNode(6)
root.right.left = TreeNode(10)
root.right.right = TreeNode(2)

আউটপুট

True

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

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

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

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