मान लीजिए कि हमारे पास एक बाइनरी ट्री है, हमें ऊपर से नीचे दाईं ओर से शुरू होने वाले पेड़ के प्रत्येक विकर्ण का योग ज्ञात करना है।
तो, अगर इनपुट पसंद है
तब आउटपुट [27, 18, 3] होगा क्योंकि विकर्ण [12,15], [8,10], [3] हैं। तो योग मान हैं [27, 18, 3]
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
फ़ंक्शन ट्रैवर्स () को परिभाषित करें। यह नोड, numLeft, आउटपुट लेगा
-
यदि नोड शून्य है, तो
-
वापसी
-
-
यदि numLeft>=आउटपुट का आकार , तो
-
आउटपुट के अंत में नोड का डेटा डालें
-
-
अन्यथा,
-
आउटपुट [numLeft]:=आउटपुट [numLeft] + नोड का डेटा
-
-
यदि नोड का बायां भाग शून्य नहीं है, तो
-
ट्रैवर्स (नोड के बाएं, numLeft+1, आउटपुट)
-
-
यदि नोड का दायां शून्य नहीं है, तो
-
ट्रैवर्स (नोड का दायां, numLeft, आउटपुट)
-
-
मुख्य विधि से, निम्न कार्य करें -
-
आउटपुट :=एक नई सूची
-
ट्रैवर्स (रूट, 0, आउटपुट)
-
वापसी आउटपुट
आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -
उदाहरण
class TreeNode: def __init__(self, data, left = None, right = None): self.data = data self.left = left self.right = right class Solution: def solve(self, root): output = [] def traverse(node, numLeft, output): if not node: return if numLeft >= len(output): output.append(node.data) else: output[numLeft] += node.data if node.left: traverse(node.left, numLeft+1, output) if node.right: traverse(node.right, numLeft, output) traverse(root, 0, output) return output ob = Solution() root = TreeNode(12) root.left = TreeNode(8) root.right = TreeNode(15) root.left.left = TreeNode(3) root.left.right = TreeNode(10) print(ob.solve(root))
इनपुट
root = TreeNode(12) root.left = TreeNode(8) root.right = TreeNode(15) root.left.left = TreeNode(3) root.left.right = TreeNode(10)
आउटपुट
[27, 18, 3]