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

पायथन में बाइनरी ट्री के मानों को बाएं और दाएं सबट्री के योग के साथ अद्यतन करने का प्रोग्राम


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

उदाहरण के लिए, यदि इनपुट जैसा है: पायथन में बाइनरी ट्री के मानों को बाएं और दाएं सबट्री के योग के साथ अद्यतन करने का प्रोग्राम तो आउटपुट होगा: पायथन में बाइनरी ट्री के मानों को बाएं और दाएं सबट्री के योग के साथ अद्यतन करने का प्रोग्राम

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

  • एक फंक्शन tree_sum() परिभाषित करें जो ट्री का रूट लेता है
  • यदि रूट null है, तो 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):
            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 है, हमें ट्री में k-लंबाई के अद्वितीय पथों की संख्या ढूंढनी है। पथ पैरेंट से चाइल्ड या चाइल्ड से पैरेंट की ओर जा सकते हैं। हम दो पथों को अलग मानेंगे जब कोई नोड एक पथ में दिखाई देता है लेकिन दूसरे में नहीं। उदाह

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

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

  1. Python में समान बाएं और दाएं उपट्री वाले सबसे बड़े उपट्री को ढूंढना Python में समान बाएं और दाएं उपट्री वाले सबसे बड़े उपट्री को ढूंढना

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