मान लीजिए कि हमारे पास एक बाइनरी ट्री है और स्ट्रिंग मूव्स की एक सूची है जिसमें "आर" (दाएं), "एल" (बाएं) और "यू" (ऊपर) शामिल हैं। जड़ से शुरू करते हुए, हमें प्रत्येक चाल को चालों में निष्पादित करके पेड़ को पार करना होगा जहां:"आर" सही बच्चे को पार करने का संकेत देता है। "एल" बाएं बच्चे को पार करने का संकेत देता है। "यू" अपने माता-पिता के लिए ट्रैवर्स को इंगित करता है।
तो, अगर इनपुट पसंद है
["आर", "आर", "यू", "एल"], तो आउटपुट 3 होगा
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
-
पिछला:=एक नई सूची
-
चाल में प्रत्येक चाल के लिए, करें
-
अतीत के अंत में जड़ डालें
-
यदि चाल "L" के समान है, तो
-
जड़ :=जड़ के बाएँ
-
-
अन्यथा जब चाल "R" के समान हो, तब
-
जड़ :=जड़ के दाईं ओर
-
-
अन्यथा,
-
अतीत से अंतिम तत्व हटाएं
-
जड़:=अतीत से अंतिम तत्व और इसे अतीत से हटा दें
-
-
-
रूट का रिटर्न वैल्यू
आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -
उदाहरण
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, moves): past = [] for move in moves: past.append(root) if move == "L": root = root.left elif move == "R": root = root.right else: past.pop() root = past.pop() return root.val ob = Solution() root = TreeNode(2) root.right = TreeNode(4) root.right.left = TreeNode(3) root.right.right = TreeNode(5) traverse = ["R","R","U","L"] print(ob.solve(root, traverse))
इनपुट
root = TreeNode(2) root.right = TreeNode(4) root.right.left = TreeNode(3) root.right.right = TreeNode(5) ["R","R","U","L"]
आउटपुट
3