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

पायथन में बाइनरी ट्री के सबसे अधिक बार आने वाले सबट्री योग को खोजने का प्रोग्राम


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

इसलिए, यदि इनपुट इस तरह है

पायथन में बाइनरी ट्री के सबसे अधिक बार आने वाले सबट्री योग को खोजने का प्रोग्राम

तो आउटपुट 3 होगा क्योंकि यह दो बार आता है - एक बार बाएं पत्ते के रूप में, और एक बार 3 - 6 + 6 के योग के रूप में।

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

  • count := एक खाली मैप
  • एक फ़ंक्शन getSum() परिभाषित करें। यह node लेगा
  • यदि node null है, तो
    • 0 वापस करें
  • mySum := getSum(node का बायाँ) + getSum(node का दायाँ) + node का मान
  • count[mySum] := count[mySum] + 1
  • mySum वापस करें
  • मुख्य विधि से निम्नलिखित करें
  • getSum(root)

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

उदाहरण

from collections import defaultdict class TreeNode:    def __init__(self, data, left = None, right = None):       self.val = data       self.left = left       self.right = right class Solution:    def solve(self, root):       count = defaultdict(int)       def getSum(node):          if not node:             return 0          mySum = getSum(node.left) + getSum(node.right) + node.val          count[mySum] += 1          return mySum       getSum(root)       return max(count, key=count.get) ob = Solution() root = TreeNode(-6) root.left = TreeNode(3) root.right = TreeNode(6) print(ob.solve(root))

इनपुट

root = TreeNode(-6) root.left = TreeNode(3) root.right = TreeNode(6)

आउटपुट

3

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

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

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

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

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

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