কম্পিউটার

পাইথনে পাথ সাম


ধরুন আমাদের একটি গাছ এবং একটি সমষ্টি আছে৷ আমাদের এমন একটি পথ খুঁজে বের করতে হবে যে যদি আমরা সেই পথটি অনুসরণ করি তবে আমরা প্রদত্ত যোগফলের সাথে মিলিত যোগফল পাব। ধরুন গাছটি [0,-3,9,-10, null,5] এর মত এবং যোগফল 14, তাহলে একটি পথ আছে 0 → 9 → 5

পাইথনে পাথ সাম

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

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

  • যদি বাম এবং ডান সাবট্রি খালি থাকে, তাহলে sum – root.val =0 হলে true ফেরত দিন, অন্যথায় মিথ্যা

  • রিটার্ন সল্ভ(root.left, sum – root.val) অথবা solve(root.right, sum – root.val)

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

উদাহরণ

# Definition for a binary tree node.
class TreeNode(object):
   def __init__(self, x):
      self.data = x
      self.left = None
      self.right = None
def insert(temp,data):
   que = []
   que.append(temp)
   while (len(que)):
      temp = que[0]
      que.pop(0)
      if (not temp.left):
         if data is not None:
            temp.left = TreeNode(data)
         else:
            temp.left = TreeNode(0)
         break
      else:
         que.append(temp.left)
      if (not temp.right):
         if data is not None:
            temp.right = TreeNode(data)
         else:
            temp.right = TreeNode(0)
         break
      else:
         que.append(temp.right)
def make_tree(elements):
   Tree = TreeNode(elements[0])
   for element in elements[1:]:
      insert(Tree, element)
   return Tree
class Solution(object):
   def hasPathSum(self, root, sum):
      """
      :type root: TreeNode
      :type sum: int
      :rtype: bool
      """
      if not root :
         return False
      if not root.left and not root.right and root.data is not None:
         return sum - root.data == 0
      if root.data is not None:
         return self.hasPathSum(root.left, sum-root.data) or self.hasPathSum(root.right, sum-root.data)
tree1 = make_tree([0,-3,9,-10,None,5])
ob1 = Solution()
print(ob1.hasPathSum(tree1, 14))

ইনপুট

tree1 = make_tree([0,-3,9,-10,None,5])

আউটপুট

True

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

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

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

  4. পাইথনে বাইনারি ট্রি সর্বাধিক পাথ যোগফল