एक स्ट्रिंग प्रारूप में डेटा के साथ नोड्स के पेड़ के साथ दिया गया और कार्य एक बाइनरी ट्री में k-वें स्तर पर नोड्स के उत्पाद को खोजना है। एक पेड़ के प्रत्येक नोड में तीन चीजें होती हैं यानी डेटा भाग, बाएँ सबट्री के लिए लेफ्ट पॉइंटर और राइट सबट्री के लिए राइट पॉइंटर।
बाइनरी ट्री का स्तर 0 से शुरू होता है और यह 'n' तक जा सकता है जो कि कोई भी धनात्मक संख्या हो सकती है। इसलिए, हमें 'k' स्तर दिया गया है और प्रोग्राम को दिए गए 'k' स्तर पर नोड्स के उत्पाद की गणना करनी चाहिए।
बाइनरी ट्री में, यदि मान लें कि हमें k=2 का मान दिया गया है
तो स्तर 2 पर नोड्स हैं - 40, 50, 60
उत्पाद=40*50*60 =1,20,000
इनपुट
(1(2(3()())(4()(5()())))(6(7()())(8()()))) K = 1
आउटपुट
product of nodes at level k = 12
इनपुट
(0(5(6()())(4()(9()())))(7(1()())(3()())))" k = 2
आउटपुट
product of nodes at level k = 72
एल्गोरिदम
Start Step 1→ Declare function to calculate nodes at k-th level int product(string tree, int k) Declare int level = -1 Declare int product = 1 Declare int size = tree.length() Loop For int i = 0 and i < size and i++ IF tree[i] = '(' Set level++ End Else IF tree[i] = ')' Set level— End Else IF level = k Set product *= (tree[i] - '0') End End End return product Step 2→ In main() Declare string tree = "(1(2(3()())(4()(5()())))(6(7()())(8()())))" Declare int k = 1 Call product(tree, k) Stop
उदाहरण
#include <bits/stdc++.h> using namespace std; //finding product at kth level int product(string tree, int k){ int level = -1; int product = 1; int size = tree.length(); for (int i = 0; i < size; i++){ if (tree[i] == '(') level++; else if (tree[i] == ')') level--; else{ if (level == k) product *= (tree[i] - '0'); } } return product; } int main(){ string tree = "(1(2(3()())(4()(5()())))(6(7()())(8()())))"; int k = 1; cout <<"product of nodes at level k = "<<product(tree, k); return 0; }
आउटपुट
यदि उपरोक्त कोड चलाया जाता है तो यह निम्न आउटपुट उत्पन्न करेगा -
product of nodes at level k = 12