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

पायथन में बारी-बारी से बाइनरी ट्री लेवल वार को पार करने का कार्यक्रम

मान लीजिए कि हमारे पास बाइनरी ट्री है, हमें बारी-बारी से बाएं से दाएं और दाएं से बाएं जाने से प्रत्येक स्तर के मूल्यों को दिखाना होगा।

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

पायथन में बारी-बारी से बाइनरी ट्री लेवल वार को पार करने का कार्यक्रम

तो आउटपुट [5, -10, 4, -2, -7, 15]

. होगा

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

  • अगर रूट शून्य है, तो

    • एक नई सूची लौटाएं

  • s1 :=एक सूची प्रारंभ में जड़ डालें

  • s2:=एक नई सूची

  • रेस :=एक नई सूची

  • जबकि s1 खाली नहीं है या s2 खाली नहीं है, करें

    • जबकि s1 खाली नहीं है, करें

      • नोड:=s1 से अंतिम तत्व हटाएं

      • यदि नोड का बायां भाग शून्य नहीं है, तो

        • s2 के अंत में नोड के बाईं ओर डालें

      • यदि नोड का दायां शून्य नहीं है, तो

        • s2 के अंत में नोड के दाईं ओर डालें

      • रेस के अंत में नोड का मान डालें

    • जबकि s2 खाली नहीं है, करें

      • नोड:=s2 से अंतिम तत्व हटाएं

      • यदि नोड का दायां शून्य नहीं है, तो

        • s1 के अंत में नोड के दाईं ओर डालें

      • यदि नोड का बायां भाग खाली नहीं है, तो

        • s1 के अंत में नोड के बाईं ओर डालें

      • रेस के अंत में नोड का मान डालें

  • रिटर्न रेस

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

उदाहरण

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):
      if not root:
         return []
      s1 = [root]
      s2 = []
      res = []
      while s1 or s2:
         while s1:
            node = s1.pop()
            if node.left:
               s2.append(node.left)
            if node.right:
               s2.append(node.right)
            res.append(node.val)
         while s2:
            node = s2.pop()
            if node.right:
               s1.append(node.right)
            if node.left:
               s1.append(node.left)
            res.append(node.val)
      return res

ob = Solution()
root = TreeNode(5)
root.left = TreeNode(4)
root.right = TreeNode(-10)
root.left.left = TreeNode(-2)
root.right.left = TreeNode(-7)
root.right.right = TreeNode(15)
print(ob.solve(root))

इनपुट

root = TreeNode(5)
root.left = TreeNode(4)
root.right = TreeNode(-10)
root.left.left = TreeNode(-2)
root.right.left = TreeNode(-7)
root.right.right = TreeNode(15)

आउटपुट

[5, -10, 4, -2, -7, 15]

  1. पायथन में बाइनरी ट्री नोड के सहोदर मूल्य को खोजने का कार्यक्रम

    मान लीजिए कि हमारे पास एक मान k और एक बाइनरी सर्च ट्री है, यहाँ प्रत्येक नोड या तो एक पत्ता है या इसमें 2 बच्चे हैं। हमें k मान वाले नोड को खोजना होगा, और उसके भाई-बहन का मान लौटाना होगा। तो, अगर इनपुट पसंद है k =4, तो आउटपुट 10 होगा। इसे हल करने के लिए, हम इन चरणों का पालन करेंगे - उपयोग()

  1. पायथन में बाइनरी ट्री से स्ट्रिंग का निर्माण

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

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

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