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

बाइनरी ट्री के पथ द्वारा बनी सभी संख्याओं का योग ज्ञात करने का पायथन प्रोग्राम


मान लीजिए हमारे पास एक बाइनरी ट्री है जहां प्रत्येक नोड 0 से 9 तक का एक अंक रखता है। अब रूट से लीफ तक का प्रत्येक पथ अपने अंकों के क्रम में एक संख्या दर्शाता है। हमें ट्री में सभी पथों द्वारा दर्शाई गई संख्याओं का योग ढूंढना है।

उदाहरण के लिए, यदि इनपुट इस तरह है:

बाइनरी ट्री के पथ द्वारा बनी सभी संख्याओं का योग ज्ञात करने का पायथन प्रोग्राम

तो आउटपुट 913 होगा जैसे 46 (4 → 6), 432 (4 → 3 → 2), 435 (4 → 3 → 5), और उनका योग 913 है।

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

  • एक फ़ंक्शन solve() परिभाषित करें। यह root, string:= खाली स्ट्रिंग लेगा
  • यदि root और not root.left और not root.right शून्येतर है, तो
    • int(string + str(root का मान)) लौटाएं
  • total := 0
  • यदि root का बायाँ नल नहीं है, तो
    • total := total + solve(root का बायाँ, string + root का मान) का संख्यात्मक मान
  • यदि root का दायाँ नल नहीं है, तो
    • total := total + solve(root का दायाँ, string + root का मान) का संख्यात्मक मान
  • total लौटाएं

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

उदाहरण

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, string=""):
        if root and not root.left and not root.right:
            return int(string + str(root.val))
        total = 0
        if root.left:
            total += int(self.solve(root.left, string + str(root.val)))
        if root.right:
            total += int(self.solve(root.right, string + str(root.val)))
        return total

ob = Solution()
root = TreeNode(4)
root.left = TreeNode(6)
root.right = TreeNode(3)
root.right.left = TreeNode(2)
root.right.right = TreeNode(5)
print(ob.solve(root))

इनपुट

root = TreeNode(4)
root.left = TreeNode(6)
root.right = TreeNode(3)
root.right.left = TreeNode(2)
root.right.right = TreeNode(5)

आउटपुट

913

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

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

  1. पायथन में बाइनरी ट्री की अधिकतम चौड़ाई खोजने का प्रोग्राम पायथन में बाइनरी ट्री की अधिकतम चौड़ाई खोजने का प्रोग्राम

    मान लीजिए हमारे पास एक बाइनरी ट्री है, हमें ट्री में किसी भी स्तर की अधिकतम चौड़ाई ढूंढनी है। यहां एक स्तर की चौड़ाई उन नोड्स की संख्या है जो बाएं सबसे नोड और दाएं सबसे नोड के बीच रखे जा सकते हैं। उदाहरण के लिए, यदि इनपुट है: तो आउटपुट होगा 2। हल करने के चरण एक मैप d बनाएं, न्यूनतम और अधिकतम मान

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

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