नोड्स के डेटा के साथ ट्री स्ट्रिंग प्रारूप में दिया गया है और कार्य बाइनरी ट्री में 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
आउटपुट
स्तर k पर नोड्स का गुणनफल = 12
इनपुट
(0(5(6()())(4()(9()())))(7(1()())(3()()))) k = 2
आउटपुट
स्तर k पर नोड्स का गुणनफल = 72
एल्गोरिदम
शुरुआत
चरण 1 → k-वें स्तर पर नोड्स की गणना के लिए फ़ंक्शन घोषित करें
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;
}
चरण 2 → main() में
string tree = "(1(2(3()())(4()(5()())))(6(7()())(8()())))";
int k = 1;
product(tree, k);
रुकें
उदाहरण
#include <bits/stdc++.h>
using namespace std;
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 << "स्तर k पर नोड्स का गुणनफल = " << product(tree, k);
return 0;
}
आउटपुट
यदि उपरोक्त कोड चलाया जाता है तो यह निम्नलिखित आउटपुट उत्पन्न करेगा:
स्तर k पर नोड्स का गुणनफल = 12