কম্পিউটার

পাইথনে একটি বাইনারি গাছে একমাত্র সন্তানের সংখ্যা খুঁজে বের করার প্রোগ্রাম


ধরুন আমাদের একটি বাইনারি গাছ আছে; আমাদের নোডের সংখ্যা খুঁজে বের করতে হবে যেগুলো একমাত্র শিশু। যেমনটি আমরা জানি যে একটি নোড x কে একমাত্র শিশু নোড বলা হয় যখন এর পিতামাতার ঠিক একটি সন্তান থাকে যা হল x।

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

পাইথনে একটি বাইনারি গাছে একমাত্র সন্তানের সংখ্যা খুঁজে বের করার প্রোগ্রাম

তাহলে আউটপুট হবে 2 কারণ 8 এবং 6 একমাত্র সন্তান।

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

  • যদি রুট নাল হয়, তাহলে
    • রিটার্ন 0
  • d :=একটি ডবল শেষ সারি
  • d-এর শেষে রুট ঢোকান
  • গণনা :=0
  • যখন d খালি নয়, কর
    • বর্তমান :=ডি এর বাম উপাদান এবং বাম উপাদান মুছুন
    • কারেন্টের বাম অংশ যদি শূন্য না হয়, তাহলে
      • ডি-তে কারেন্টের বাঁদিকে ঢোকান
      • যদি কারেন্টের ডানদিকে শূন্য হয়, তাহলে
        • গণনা :=গণনা + 1
      • যদি কারেন্টের ডানদিকে শূন্য না হয়, তাহলে
        • ডি-তে কারেন্টের ডানদিকে ঢোকান
        • কারেন্টের বাম অংশ যদি শূন্য হয়, তাহলে
          • গণনা :=গণনা + 1
  • রিটার্ন গণনা

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

উদাহরণ কোড

from collections import deque

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):
      if not root:
         return 0
      d = deque()
      d.append(root)
      count = 0
      while d:
         current = d.popleft()
         if current.left:
            d.append(current.left)
            if not current.right:
               count += 1
            if current.right:
               d.append(current.right)
               if not current.left:
                  count += 1
         return count

ob = Solution()
root = TreeNode(9)
root.left = TreeNode(7)
root.right = TreeNode(10)
root.left.right = TreeNode(8)
root.right.right = TreeNode(6)
print(ob.solve(root))

ইনপুট

root = TreeNode(9)

root.left = TreeNode(7)

root.right = TreeNode(10)

root.left.right = TreeNode(8)

root.right.right = TreeNode(6)

আউটপুট

2

  1. পাইথনে একটি বাইনারি ট্রি নোডের ভাইবোনের মান খুঁজে বের করার প্রোগ্রাম

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

  3. পাইথনে একটি বাইনারি গাছে কে-দৈর্ঘ্যের পাথ খুঁজে বের করার জন্য প্রোগ্রাম

  4. পাইথনে একটি বাইনারি গাছের সর্বাধিক প্রস্থ খুঁজে বের করার প্রোগ্রাম