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

पायथन में नोड और वंशज के बीच अंतर खोजने का कार्यक्रम

मान लीजिए कि हमारे पास एक बाइनरी ट्री है, हमें किसी भी नोड और उसके वंशजों के बीच सबसे बड़ा निरपेक्ष अंतर खोजना होगा।

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

पायथन में नोड और वंशज के बीच अंतर खोजने का कार्यक्रम

तो आउटपुट 7 होगा क्योंकि नोड्स 8 और 1 के बीच सबसे बड़ा पूर्ण अंतर है।

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

  • एक फ़ंक्शन को परिभाषित करें dfs() । यह नोड लेगा
  • यदि नोड रिक्त नहीं है, तो
    • सकारात्मक और नकारात्मक अनंत के साथ एक सूची लौटाएं
  • बाएं:=dfs (नोड के बाएं)
  • दाएं:=dfs (नोड के दाएं)
  • res :=एक जोड़ी (न्यूनतम बाएँ[0], दाएँ[0] और नोड का मान, और अधिकतम बाएँ[1], दाएँ[1] और नोड का मान)
  • Ans :=अधिकतम उत्तर, (नोड का मान - res[0]) और (res[1] - नोड का मान)
  • रिटर्न रेस
  • मुख्य विधि से, निम्न कार्य करें -
  • उत्तर:=0
  • dfs(रूट)
  • वापसी उत्तर

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

उदाहरण

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):
      def dfs(node):
         if not node:
            return [float("inf"), float("-inf")]
         left = dfs(node.left)
         right = dfs(node.right)
         res = [min(left[0], right[0], node.val), max(left[1], right[1], node.val)]
         self.ans = max(self.ans, node.val - res[0], res[1] - node.val)
         return res
      self.ans = 0
      dfs(root)
      return self.ans
ob = Solution()
root = TreeNode(1)
root.left = TreeNode(5)
root.right = TreeNode(3)
root.right.left = TreeNode(2)
root.right.right = TreeNode(8)
root.right.left.left = TreeNode(7)
root.right.left.right = TreeNode(4)
print(ob.solve(root))

इनपुट

root = TreeNode(1)
root.left = TreeNode(5)
root.right = TreeNode(3)
root.right.left = TreeNode(2)
root.right.right = TreeNode(8)
root.right.left.left = TreeNode(7)
root.right.left.right = TreeNode(4)

आउटपुट

7

  1. पायथन में एक बाइनरी ट्री के लीफ और नॉन-लीफ नोड्स को खोजने का कार्यक्रम

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

  1. एक सूची में सभी जोड़ों के बीच पूर्ण अंतर का योग खोजने के लिए पायथन कार्यक्रम

    इस लेख में, हम दिए गए समस्या कथन को हल करने के लिए समाधान और दृष्टिकोण के बारे में जानेंगे। समस्या कथन एक सूची इनपुट को देखते हुए, हमें सूची में सभी जोड़ों के बीच पूर्ण अंतर का योग खोजने की जरूरत है। गणना करें () विधि एक काउंटर को एक पुनरावर्तनीय में जोड़ती है और इसे एन्यूमरेट ऑब्जेक्ट प्रकार के र

  1. विषम और सम अंकों के योग के बीच अंतर के लिए पायथन कार्यक्रम

    इस लेख में, हम दिए गए समस्या कथन को हल करने के लिए समाधान और दृष्टिकोण के बारे में जानेंगे। समस्या कथन -एक पूर्णांक को देखते हुए, हमें यह गणना करने की आवश्यकता है कि विषम अंकों के योग और सम अंकों के योग के बीच का अंतर 0 है या नहीं। ब्रूट-फोर्स दृष्टिकोण संख्याओं में सभी सम और विषम अंकों के योग की