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

पायथन में दिशाओं की सूची का उपयोग करके बाइनरी ट्री को पार करने का कार्यक्रम

मान लीजिए कि हमारे पास एक बाइनरी ट्री है और स्ट्रिंग मूव्स की एक सूची है जिसमें "आर" (दाएं), "एल" (बाएं) और "यू" (ऊपर) शामिल हैं। जड़ से शुरू करते हुए, हमें प्रत्येक चाल को चालों में निष्पादित करके पेड़ को पार करना होगा जहां:"आर" सही बच्चे को पार करने का संकेत देता है। "एल" बाएं बच्चे को पार करने का संकेत देता है। "यू" अपने माता-पिता के लिए ट्रैवर्स को इंगित करता है।

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

पायथन में दिशाओं की सूची का उपयोग करके बाइनरी ट्री को पार करने का कार्यक्रम

["आर", "आर", "यू", "एल"], तो आउटपुट 3 होगा

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

  • पिछला:=एक नई सूची

  • चाल में प्रत्येक चाल के लिए, करें

    • अतीत के अंत में जड़ डालें

    • यदि चाल "L" के समान है, तो

      • जड़ :=जड़ के बाएँ

    • अन्यथा जब चाल "R" के समान हो, तब

      • जड़ :=जड़ के दाईं ओर

    • अन्यथा,

      • अतीत से अंतिम तत्व हटाएं

      • जड़:=अतीत से अंतिम तत्व और इसे अतीत से हटा दें

  • रूट का रिटर्न वैल्यू

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

उदाहरण

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, moves):
      past = []
      for move in moves:
         past.append(root)
         if move == "L":
            root = root.left
         elif move == "R":
            root = root.right
         else:
            past.pop()
            root = past.pop()
      return root.val
ob = Solution()
root = TreeNode(2)
root.right = TreeNode(4)
root.right.left = TreeNode(3)
root.right.right = TreeNode(5)
traverse = ["R","R","U","L"]
print(ob.solve(root, traverse))

इनपुट

root = TreeNode(2) root.right = TreeNode(4) root.right.left =
TreeNode(3) root.right.right = TreeNode(5) ["R","R","U","L"]

आउटपुट

3

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

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

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

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

  1. पायथन में बाइनरी ट्री को उल्टा करें

    मान लीजिए कि हमारे पास एक बाइनरी ट्री है। हमारा काम एक उल्टा बाइनरी ट्री बनाना है। तो अगर पेड़ नीचे जैसा है - उल्टा पेड़ इस तरह होगा इसे हल करने के लिए, हम एक पुनरावर्ती दृष्टिकोण का उपयोग करेंगे यदि रूट शून्य है, तो वापस आएं बाएं और दाएं पॉइंटर्स को स्वैप करें बाएं सबट्री और राइट सबट्री को द