मान लीजिए कि हमारे पास बाइनरी ट्री है, हमें बारी-बारी से बाएं से दाएं और दाएं से बाएं जाने से प्रत्येक स्तर के मूल्यों को दिखाना होगा।
तो, अगर इनपुट पसंद है
तो आउटपुट [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]