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

पायथन में सम रूट टू लीफ नंबर्स


मान लीजिए कि हमारे पास एक बाइनरी ट्री है जिसमें केवल 0-9 के अंक हैं, यहां सभी रूट-टू-लीफ पथ एक संख्या का प्रतिनिधित्व कर सकते हैं।

तो अगर पेड़ जैसा है -

पायथन में सम रूट टू लीफ नंबर्स

यह दो पथ 21 और 23 का प्रतिनिधित्व कर रहा है, इसलिए आउटपुट 21 + 23 =44 होगा।

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

  • dfs() नामक एक पुनरावर्ती फ़ंक्शन बनाएं, यह रूट लेगा, और num. प्रारंभ में संख्या =0
  • यदि नोड शून्य नहीं है
    • संख्या:=संख्या * 10 + नोड का मान
    • यदि नोड दायां शून्य नहीं है और बाएं नोड शून्य नहीं है, तो'
      • योग :=योग + अंक
      • संख्या:=संख्या / 10
      • समारोह से वापसी
    • dfs(नोड का दायां, अंक)
    • dfs (नोड के बाएं, संख्या)
    • संख्या:=संख्या / 10
    • विधि से वापसी
  • शुरू में योग :=0
  • रूट का उपयोग करके dfs को कॉल करें, और
  • वापसी राशि।

उदाहरण (पायथन)

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

class TreeNode:
   def __init__(self, data, left = None, right = None):
      self.data = data
      self.left = left
      self.right = right
def insert(temp,data):
   que = []
   que.append(temp)
   while (len(que)):
      temp = que[0]
      que.pop(0)
      if (not temp.left):
         if data is not None:
            temp.left = TreeNode(data)
         else:
            temp.left = TreeNode(0)
         break
      else:
         que.append(temp.left)
      if (not temp.right):
         if data is not None:
            temp.right = TreeNode(data)
         else:
            temp.right = TreeNode(0)
         break
      else:
         que.append(temp.right)
def make_tree(elements):
   Tree = TreeNode(elements[0])
   for element in elements[1:]:
      insert(Tree, element)
   return Tree
class Solution(object):
   def sumNumbers(self, root):
      self.sum = 0
      self.dfs(root)
      return self.sum
   def dfs(self,node,num=0):
      if node:
         num = num*10 + node.data
         if not node.right and not node.left:
            self.sum+=num
            num/=10
            return
         self.dfs(node.right,num)
         self.dfs(node.left,num)
         num/=10
         return
ob1 = Solution()
tree = make_tree([2,1,3])
print(ob1.sumNumbers(tree))

इनपुट

[2,1,3]

आउटपुट

44

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

    मान लीजिए कि हमारे पास एक बाइनरी ट्री है, हमें रूट से लीफ नोड तक के सबसे लंबे पथ का योग ज्ञात करना है। यदि दो समान लंबे पथ हैं, तो पथ को अधिक राशि के साथ लौटाएं। तो, अगर इनपुट पसंद है तो आउटपुट 20 होगा। इसे हल करने के लिए, हम इन चरणों का पालन करेंगे - फ़ंक्शन rec() को परिभाषित करें। यह कठिन

  1. पायथन में रूट टू लीफ पाथ में अपर्याप्त नोड्स

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

  1. पायथन में पथ योग

    मान लीजिए कि हमारे पास एक पेड़ और एक योग है। हमें एक रास्ता ऐसा खोजना होगा कि अगर हम उस रास्ते पर चलेंगे तो हमें वह योग मिलेगा जो दिए गए योग से मेल खाएगा। मान लीजिए पेड़ [0,-3,9,-10, null,5] जैसा है और योग 14 है, तो एक पथ है 0 → 9 → 5 इसे हल करने के लिए, हम इन चरणों का पालन करेंगे। यदि जड़ शून