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

पायथन में बाएं और दाएं सबट्री योग के साथ मूल्यों को अपडेट करके एक पेड़ खोजने का कार्यक्रम

मान लीजिए कि हमारे पास एक बाइनरी ट्री है, हमें एक ही पेड़ ढूंढना है, लेकिन हर नोड का मान उसके मान + उसके बाएँ और दाएँ सबट्री के सभी योगों से बदल दिया जाता है।

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

पायथन में बाएं और दाएं सबट्री योग के साथ मूल्यों को अपडेट करके एक पेड़ खोजने का कार्यक्रम


तो आउटपुट होगा

पायथन में बाएं और दाएं सबट्री योग के साथ मूल्यों को अपडेट करके एक पेड़ खोजने का कार्यक्रम

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

  • एक फ़ंक्शन को परिभाषित करें tree_sum() । यह एक पेड़ की जड़ लेगा

  • अगर रूट शून्य है, तो

    • वापसी 0

  • जड़ का डेटा:=tree_sum (रूट के बाएँ) + tree_sum (रूट का दाएँ) + रूट का डेटा

  • रूट का डेटा लौटाएं

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

  • tree_sum(जड़)

  • वापसी जड़

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

उदाहरण

class TreeNode:
   def __init__(self, data, left = None, right = None):
      self.data = data
      self.left = left
      self.right = right

def inorder(root):
   if root:
      inorder(root.left)
      print(root.data, end = ', ')
      inorder(root.right)
   
class Solution:
   def solve(self, root):
      def tree_sum(root: TreeNode):
         if root is None:
            return 0
         root.data = tree_sum(root.left) + tree_sum(root.right) + root.data
return root.data
tree_sum(root)
return root
ob = Solution()
root = TreeNode(2)
root.left = TreeNode(3)
root.right = TreeNode(4)
root.left.left = TreeNode(9)
root.left.right = TreeNode(7)
ob.solve(root)
inorder(root)

इनपुट

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

आउटपुट

9, 19, 7, 25, 4,

  1. पायथन में एक बाइनरी ट्री पर k-लंबाई पथ खोजने का कार्यक्रम

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

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

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

  1. पायथन में समान बाएँ और दाएँ उपप्रकार वाले सबसे बड़े उपट्री का पता लगाएं

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