কম্পিউটার

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


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

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

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

তাহলে আউটপুট হবে 62 কারণ নোডগুলি [12,13,14,16,7]।

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

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

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

    • রিটার্ন 0

  • l :=utils(মূলের বামে)

  • r :=utils(মূলের ডানদিকে)

  • max_single :=সর্বাধিক (l এবং r এর সর্বোচ্চ) + মূলের মান) এবং মূলের মান

  • max_top :=max_single এর সর্বোচ্চ এবং l + r + রুটের মান

  • res :=res এর সর্বোচ্চ এবং max_top

  • রিটার্ন max_single

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

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

    • রিটার্ন 0

  • res :=অসীম

  • ইউটিলস(রুট)

  • রিটার্ন রিটার্ন

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

উদাহরণ

class TreeNode:
   def __init__(self, value):
      self.val = value
      self.left = None
      self.right = None
class Solution:
   def solve(self, root):
      if root is None:
         return 0
      self.res = float("-inf")
      self.utils(root)
      return self.res
   def utils(self, root):
      if root is None:
         return 0
      l = self.utils(root.left)
      r = self.utils(root.right)
      max_single = max(max(l, r) + root.val, root.val)
      max_top = max(max_single, l + r + root.val)
      self.res = max(self.res, max_top)
      return max_single
ob = Solution()
root = TreeNode(13)
root.left = TreeNode(12)
root.right = TreeNode(14)
root.right.left = TreeNode(16)
root.right.right = TreeNode(22)
root.right.left.left = TreeNode(4)
root.right.left.right = TreeNode(7)
print(ob.solve(root))

ইনপুট

root = TreeNode(13)
root.left = TreeNode(12)
root.right = TreeNode(14)
root.right.left = TreeNode(16)
root.right.right = TreeNode(22)
root.right.left.left = TreeNode(4)
root.right.left.right = TreeNode(7)

আউটপুট

62

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

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

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

  4. পাইথনে একটি প্রদত্ত বাইনারি ট্রিতে সবচেয়ে বড় পারফেক্ট সাবট্রি খুঁজুন