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

पायथन में बाइनरी ट्री का इनऑर्डर ट्रैवर्सल करने का प्रोग्राम


मान लीजिए हमारे पास एक बाइनरी ट्री है; हमें एक सूची ढूंढनी है जिसमें रूट का इनऑर्डर ट्रैवर्सल हो। जैसा कि हम जानते हैं, इनऑर्डर ट्रैवर्सल ट्री में सभी नोड्स को ट्रैवर्स करने का एक तरीका है जहां हम:

  • बाएं सबट्री को रिकर्सिवली ट्रैवर्स करते हैं।
  • वर्तमान नोड को ट्रैवर्स करते हैं।
  • दाएं सबट्री को रिकर्सिवली ट्रैवर्स करते हैं।

हमें इस समस्या को इटरेटिव तरीके से हल करने का प्रयास करना है।

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

पायथन में बाइनरी ट्री का इनऑर्डर ट्रैवर्सल करने का प्रोग्राम

तो आउटपुट [12, 13, 4, 16, 7, 14, 22] होगा।

इसे हल करने के लिए हम निम्न चरणों का पालन करेंगे (स्टैक का उपयोग करके इटरेटिव इनऑर्डर):

  • inorder := [], stack := []।

  • अनंत लूप में निम्न करें:

    • यदि root null नहीं है:

      • stack.append(root); root = root.left।

    • अन्यथा यदि stack खाली नहीं है:

      • root = stack.pop()।

      • inorder.append(root.val)।

      • root = root.right।

    • अन्यथा, लूप से बाहर निकलें।

  • inorder लौटाएं।

उदाहरण

class TreeNode:    def __init__(self, value):       self.val = value       self.left = None       self.right = None class Solution:    def solve(self, root):       inorder = []       stack = []       while True:          if root:             stack.append(root)             root = root.left          elif stack:             root = stack.pop()             inorder.append(root.val)             root = root.right          else:             break       return inorder ob = Solution() root = TreeNode(13) root.left = TreeNode(12) root.right = TreeNode(14) root.right.left = TreeNode(16) root.right.right = TreeNode(22) root.right.left.left = TreeNode(4) root.right.left.right = TreeNode(7) print(ob.solve(root))

इनपुट

root = TreeNode(13) root.left = TreeNode(12) root.right = TreeNode(14) root.right.left = TreeNode(16) root.right.right = TreeNode(22) root.right.left.left = TreeNode(4) root.right.left.right = TreeNode(7)

आउटपुट

[12, 13, 4, 16, 7, 14, 22]

  1. पायथन में इनऑर्डर और पोस्टऑर्डर ट्रैवर्सल से बाइनरी ट्री बनाएं पायथन में इनऑर्डर और पोस्टऑर्डर ट्रैवर्सल से बाइनरी ट्री बनाएं

    मान लीजिए हमारे पास एक बाइनरी ट्री का इनऑर्डर और पोस्टऑर्डर ट्रैवर्सल अनुक्रम है। हमें इन अनुक्रमों से ट्री उत्पन्न करना है। इसलिए यदि पोस्टऑर्डर और इनऑर्डर अनुक्रम [9,15,7,20,3] और [9,3,15,20,7] हैं, तो ट्री होगा - आइए चरण देखते हैं - मान लीजिए मेथड को buildTree कहा जाता है जिसमें प्रीऑर्डर और इन

  1. पायथन में बाइनरी ट्री इनऑर्डर ट्रैवर्सल पायथन में बाइनरी ट्री इनऑर्डर ट्रैवर्सल

    मान लीजिए हमारे पास एक बाइनरी ट्री है। हमें रिकर्सन का उपयोग किए बिना इनऑर्डर ट्रैवर्सल योजना का उपयोग करके इस ट्री को पार करना है। इसलिए यदि ट्री इस तरह हैतो ट्रैवर्सल [2,5,7,10,15,20] होगाइसे हल करने के लिए, हम इन चरणों का पालन करेंगे -दो सरणी res और stack बनाएं, curr := root सेट करेंएक अनंत लूप च

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

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