Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> Python

पायथन में पथ योग


मान लीजिए कि हमारे पास एक पेड़ और एक योग है। हमें एक रास्ता ऐसा खोजना होगा कि अगर हम उस रास्ते पर चलेंगे तो हमें वह योग मिलेगा जो दिए गए योग से मेल खाएगा। मान लीजिए पेड़ [0,-3,9,-10, null,5] जैसा है और योग 14 है, तो एक पथ है 0 → 9 → 5

पायथन में पथ योग

इसे हल करने के लिए, हम इन चरणों का पालन करेंगे।

  • यदि जड़ शून्य है, तो गलत लौटें

  • यदि बाएँ और दाएँ सबट्री खाली हैं, तो सही होने पर वापस लौटें - root.val =0, अन्यथा असत्य

  • हल करें (रूट.बाएं, योग - root.val) या हल करें (रूट.दाएं, योग - 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. पायथन में एक बाइनरी ट्री की जड़ से पत्ती तक सबसे लंबे योग पथ का योग खोजने का कार्यक्रम

    मान लीजिए कि हमारे पास एक बाइनरी ट्री है, हमें रूट से लीफ नोड तक के सबसे लंबे पथ का योग ज्ञात करना है। यदि दो समान लंबे पथ हैं, तो पथ को अधिक राशि के साथ लौटाएं। तो, अगर इनपुट पसंद है तो आउटपुट 20 होगा। इसे हल करने के लिए, हम इन चरणों का पालन करेंगे - फ़ंक्शन rec() को परिभाषित करें। यह कठिन

  1. पायथन में बाइनरी ट्री के किसी भी पथ का सबसे बड़ा योग खोजने का कार्यक्रम

    मान लीजिए कि हमारे पास एक बाइनरी ट्री है, हमें रूट नोड से लीफ नोड तक जाने वाले किसी भी पथ का सबसे बड़ा योग ज्ञात करना है। तो, अगर इनपुट पसंद है तो रूट से आउटपुट 29 होगा, अगर हम 5-<9-<7-<8 पथ का अनुसरण करते हैं तो यह जोड़ के बाद 29 हो जाएगा। इसे हल करने के लिए, हम इन चरणों का पालन करेंगे- फंक

  1. पायथन में बाइनरी ट्री अधिकतम पथ योग

    मान लीजिए कि हमारे पास एक गैर-खाली बाइनरी ट्री है। हमें पथ योग ज्ञात करना है। तो यहां, पथ कुछ शुरुआती नोड से किसी भी नोड में नोड्स का कोई अनुक्रम है जहां माता-पिता कनेक्शन मौजूद हैं। पथ में कम से कम एक नोड होना चाहिए और रूट नोड के माध्यम से जाने की आवश्यकता नहीं है। तो अगर इनपुट ट्री है - यहां आउ