কম্পিউটার

পাইথনের একটি বাইনারি গাছ থেকে শুধুমাত্র একটি শিশুর সাথে সমস্ত নোডগুলি সরানোর প্রোগ্রাম?


ধরুন আমাদের একটি বাইনারি গাছের মূল আছে; আমাদের শুধুমাত্র একটি সন্তানের সাথে সমস্ত নোড মুছে ফেলতে হবে৷

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

পাইথনের একটি বাইনারি গাছ থেকে শুধুমাত্র একটি শিশুর সাথে সমস্ত নোডগুলি সরানোর প্রোগ্রাম?

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

পাইথনের একটি বাইনারি গাছ থেকে শুধুমাত্র একটি শিশুর সাথে সমস্ত নোডগুলি সরানোর প্রোগ্রাম?

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

  • সমাধান() নামক একটি পদ্ধতি সংজ্ঞায়িত করুন, এটি গাছের মূল গ্রহণ করবে

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

    • রিটার্ন রুট

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

    • রিটার্ন রুট

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

    • রিটার্ন সলভ (মূলের ডানদিকে)

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

    • রিটার্ন সলভ (রুটের বামে)

  • মূলের বাম :=সমাধান (মূলের বাম)

  • মূলের অধিকার :=সমাধান (মূলের ডান)

  • রিটার্ন রুট


উদাহরণ

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

def print_tree(root):
   if root is not None:
      print_tree(root.left)
      print(root.data, end = ', ')
      print_tree(root.right)

class Solution:
   def solve(self, root):
      if not root:
         return root

      if not root.left and not root.right:
         return root

      if not root.left:
         return self.solve(root.right)

      if not root.right:
         return self.solve(root.left)

      root.left = self.solve(root.left)
      root.right = self.solve(root.right)

      return root

ob = Solution()
root = TreeNode(1)
root.left = TreeNode(2)
root.right = TreeNode(3)
root.left.left = TreeNode(4)
root.right.right = TreeNode(5)
root.left.left.right = TreeNode(6)
root.right.right.left = TreeNode(7)
root.right.right.right = TreeNode(8)

res = ob.solve(root)
print_tree(res)

ইনপুট

root = TreeNode(1)
root.left = TreeNode(2)
root.right = TreeNode(3)
root.left.left = TreeNode(4)
root.right.right = TreeNode(5)
root.left.left.right = TreeNode(6)
root.right.right.left = TreeNode(7)
root.right.right.right = TreeNode(8)

আউটপুট

6, 1, 7, 5, 8,

  1. পাইথনে একটি বাইনারি গাছের পাতা এবং নন-লিফ নোড খুঁজে বের করার প্রোগ্রাম

  2. পাইথনে একটি বাইনারি গাছের মূল থেকে পাতা পর্যন্ত দীর্ঘতম সমষ্টি পথের যোগফল খুঁজে বের করার প্রোগ্রাম

  3. পাইথনের একটি বাইনারি ট্রি থেকে জোড় মান সহ সমস্ত পাতা মুছে ফেলার প্রোগ্রাম

  4. বিএসটি থেকে সমস্ত নোড মুছে ফেলার প্রোগ্রাম যা পাইথনে পরিসরে নেই