मान लीजिए हमारे पास एक बाइनरी ट्री है। हमें निम्नलिखित ऑपरेशन करने हैं:
प्रत्येक स्तर के लिए, यदि उस स्तर पर पत्ते हैं तो सभी पत्तियों का योग ढूंढें। अन्यथा इसे अनदेखा करें।
सभी योगों का गुणनफल ढूंढें और इसे लौटाएं।
तो, यदि इनपुट इस तरह है:

तो आउटपुट 270 होगा। पहले दो स्तरों में कोई पत्ते नहीं हैं। तीसरे स्तर पर एक पत्ता 9 है। अंतिम स्तर पर चार पत्ते 2, 12, 5 और 11 हैं। तो परिणाम 9 * (2 + 12 + 5 + 11) = 270 है।
इसे हल करने के लिए, हम निम्नलिखित चरणों का पालन करेंगे:
यदि root null है, तो:
0 लौटाएं
res := 1
que := एक क्यू
que के अंत में root डालें
अनंत रूप से करें:
no_of_nodes := que का आकार
यदि no_of_nodes, 0 के समान है, तो:
लूप से बाहर निकलें
sum_level := 0
found_leaf := False
जब no_of_nodes > 0, करें:
curr_node := que का पहला तत्व
यदि curr_node पत्ता है, तो:
found_leaf := True
sum_level := sum_level + curr_node.data
que से पहला तत्व हटाएं
यदि curr_node.left null नहीं है, तो:
curr_node.left को que के अंत में डालें
यदि curr_node.right null नहीं है, तो:
curr_node.right को que के अंत में डालें
no_of_nodes := no_of_nodes - 1
यदि found_leaf सच है, तो:
res := res * sum_level
res लौटाएं
उदाहरण
बेहतर समझ के लिए निम्नलिखित कार्यान्वयन देखें:
class TreeNode: def __init__(self, data): self.data = data self.left = self.right = None def isLeaf(root) : return (not root.left and not root.right) def find_res(root) : if (not root) : return 0 res = 1 que = [] que.append(root) while (True): no_of_nodes = len(que) if (no_of_nodes == 0) : break sum_level = 0 found_leaf = False while (no_of_nodes > 0) : curr_node = que[0] if (isLeaf(curr_node)) : found_leaf = True sum_level += curr_node.data que.pop(0) if (curr_node.left != None) : que.append(curr_node.left) if (curr_node.right != None) : que.append(curr_node.right) no_of_nodes -=1 if (found_leaf) : res *= sum_level return res root = TreeNode(8) root.left = TreeNode(8) root.right = TreeNode(6) root.left.right = TreeNode(7) root.left.left = TreeNode(9) root.left.right.left = TreeNode(2) root.left.right.right = TreeNode(12) root.right.right = TreeNode(10) root.right.right.left = TreeNode(5) root.right.right.right = TreeNode(11) print(find_res(root))
इनपुट
root = TreeNode(8) root.left = TreeNode(8) root.right = TreeNode(6) root.left.right = TreeNode(7) root.left.left = TreeNode(9) root.left.right.left = TreeNode(2) root.left.right.right = TreeNode(12) root.right.right = TreeNode(10) root.right.right.left = TreeNode(5) root.right.right.right = TreeNode(11)
आउटपुट
270