কম্পিউটার

পাইথনে একটি বাইনারি ট্রিতে তির্যক পথের প্রতিটি উপাদানের যোগফল খুঁজে বের করার জন্য প্রোগ্রাম


ধরুন আমাদের একটি বাইনারি গাছ আছে, আমাদের উপরের থেকে নীচে ডানদিকে শুরু করে গাছের প্রতিটি কর্ণের যোগফল খুঁজে বের করতে হবে।

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

পাইথনে একটি বাইনারি ট্রিতে তির্যক পথের প্রতিটি উপাদানের যোগফল খুঁজে বের করার জন্য প্রোগ্রাম

তাহলে আউটপুট হবে [27, 18, 3] যেমন কর্ণগুলি [12,15], [8,10], [3]। সুতরাং যোগফলের মান হল [২৭, ১৮, ৩]

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

একটি ফাংশন traverse() সংজ্ঞায়িত করুন। এটি নোড, numLeft, আউটপুট

নেবে
  • যদি নোড নাল হয়, তাহলে

    • ফেরত

  • যদি numLeft>=আউটপুটের আকার হয়, তাহলে

    • আউটপুট শেষে নোডের ডেটা সন্নিবেশ করান

  • অন্যথায়,

    • আউটপুট[numLeft] :=output[numLeft] + নোডের ডেটা

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

    • ট্রাভার্স (নোডের বাম, numLeft+1, আউটপুট)

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

    • ট্র্যাভার্স (নোডের ডান, numLeft, আউটপুট)

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

  • আউটপুট :=একটি নতুন তালিকা

  • ট্রাভার্স(রুট, 0, আউটপুট)

  • রিটার্ন আউটপুট

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

উদাহরণ

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):
      output = []
      def traverse(node, numLeft, output):
         if not node:
            return
         if numLeft >= len(output):
            output.append(node.data)
         else:
            output[numLeft] += node.data
         if node.left:
            traverse(node.left, numLeft+1, output)
         if node.right:
            traverse(node.right, numLeft, output)
      traverse(root, 0, output)
      return output
ob = Solution()
root = TreeNode(12)
root.left = TreeNode(8)
root.right = TreeNode(15)
root.left.left = TreeNode(3)
root.left.right = TreeNode(10)
print(ob.solve(root))

ইনপুট

root = TreeNode(12)
root.left = TreeNode(8)
root.right = TreeNode(15)
root.left.left = TreeNode(3)
root.left.right = TreeNode(10)

আউটপুট

[27, 18, 3]

  1. পাইথনে বাইনারি ট্রির যেকোন পথের বৃহত্তম যোগফল খুঁজে বের করার প্রোগ্রাম

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

  3. পাইথন প্রোগ্রামে অ্যারের সমষ্টি খুঁজুন

  4. অ্যারের যোগফল খুঁজে পেতে পাইথন প্রোগ্রাম