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

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


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

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

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

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

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

  • यदि root null है, तो खाली सूची लौटाएं।

  • s1 := [root] और s2 := [] दो स्टैक बनाएं।

  • res := [] परिणाम सूची।

  • जब तक s1 या s2 खाली नहीं हैं:

    • जब तक s1 खाली नहीं है:

      • node := s1.pop()।

      • यदि node.left है, तो s2.append(node.left)।

      • यदि node.right है, तो s2.append(node.right)।

      • res.append(node.val)।

    • जब तक s2 खाली नहीं है:

      • node := s2.pop()।

      • यदि node.right है, तो s1.append(node.right)।

      • यदि node.left है, तो s1.append(node.left)।

      • res.append(node.val)।

  • res लौटाएं।

उदाहरण

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 होगा।इसे हल करने के लिए, हम इन चरणों का पालन करेंगे −एक फ़ंक्शन util

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

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

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

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