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

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

मान लीजिए कि हमारे पास एक बाइनरी ट्री है, हमें रूट नोड से लीफ नोड तक जाने वाले किसी भी पथ का सबसे बड़ा योग ज्ञात करना है।

तो, अगर इनपुट पसंद है

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

तो रूट से आउटपुट 29 होगा, अगर हम 5-<9-<7-<8 पथ का अनुसरण करते हैं तो यह जोड़ के बाद 29 हो जाएगा।

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

  • फंक्शन वॉक () को परिभाषित करें। यह नोड लेगा, एस

  • यदि नोड शून्य है, तो

    • max_sum :=max_sum और s का अधिकतम

    • वापसी

  • s :=s + नोड का डेटा

  • वॉक (नोड के बाएं, एस)

  • वॉक (नोड के दाएं, एस)

  • मुख्य विधि से निम्न कार्य करें-

  • max_sum :=0

  • वॉक (रूट, 0)

  • वापसी max_sum

आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें-

उदाहरण

from collections import defaultdict
   class TreeNode:
      def __init__(self, data, left = None, right = None):
         self.data = data
         self.left = left
         self.right = right
   class Solution:
      def walk(self, node, s):
         if not node:
            self.max_sum = max(self.max_sum, s)
         return
      s += node.data
      self.walk(node.left, s)
      self.walk(node.right, s)
   def solve(self, root):
      self.max_sum = 0
      self.walk(root, 0)
   return self.max_sum
ob = Solution()
root = TreeNode(5)
root.left = TreeNode(1)
root.right = TreeNode(9)
root.right.left = TreeNode(7)
root.right.right = TreeNode(10)
root.right.left.left = TreeNode(6)
root.right.left.right = TreeNode(8)
print(ob.solve(root))

इनपुट

root = TreeNode(5)
root.left = TreeNode(1)
root.right = TreeNode(9)
root.right.left = TreeNode(7)
root.right.right = TreeNode(10)
root.right.left.left = TreeNode(6)
root.right.left.right = TreeNode(8)

आउटपुट

29

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

    मान लीजिए कि हमारे पास एक दिया गया बाइनरी ट्री है; हमें दिए गए बाइनरी ट्री में सबसे बड़े परफेक्ट उप-वृक्ष का आकार ज्ञात करना है। जैसा कि हम जानते हैं कि पूर्ण बाइनरी ट्री एक बाइनरी ट्री है जिसमें सभी आंतरिक नोड्स में दो बच्चे होते हैं और सभी पत्ते समान स्तर पर होते हैं। तो, अगर इनपुट पसंद है तो

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

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

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

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