मान लीजिए कि हमारे पास एक बाइनरी ट्री है। हमें उस पेड़ के प्रीऑर्डर ट्रैवर्सल को वापस करना होगा। तो अगर पेड़ जैसा है -
फिर प्रीऑर्डर ट्रैवर्सल होगा:[3,9,20,15,7]
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
- रिक्त सूचियां बनाएं जिन्हें रेस और सेंट कहा जाता है।
- नोड:=रूट
- जबकि नोड या सेंट खाली नहीं है
- जबकि नोड शून्य नहीं है, तब
- नोड के वैल को रेस में डालें, नोड को सेंट में डालें और नोड सेट करें:=नोड के बाईं ओर
- अस्थायी:=सेंट का अंतिम तत्व, और सेंट का अंतिम तत्व हटाएं
- यदि अस्थायी का अधिकार उपलब्ध है, तो
- नोड:=तापमान के दाईं ओर
- जबकि नोड शून्य नहीं है, तब
- रिटर्न रेस
आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -
उदाहरण
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): temp.left = TreeNode(data) break else: que.append(temp.left) if (not temp.right): temp.right = TreeNode(data) 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 preorderTraversal(self, root): res = [] st = [] node = root while node or st: while node: if node.data != None: res.append(node.data) st.append(node) node = node.left temp = st[-1] st.pop() if temp.right: node = temp.right return res ob1 = Solution() head = make_tree([3,9,20,None,None,15,7]) print(ob1.preorderTraversal(head))
इनपुट
[3,9,20,null,null,15,7]
आउटपुट
[3, 9, 20, 15, 7]