Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> C++

C++ में स्ट्रिंग के रूप में दर्शाए गए ट्री में k-वें स्तर पर नोड्स का गुणनफल


नोड्स के डेटा के साथ ट्री स्ट्रिंग प्रारूप में दिया गया है और कार्य बाइनरी ट्री में k-वें स्तर पर नोड्स का गुणनफल निकालना है। ट्री के प्रत्येक नोड में तीन चीजें होती हैं यानी डेटा भाग, बाएं उपट्री के लिए बायां पॉइंटर और दाएं उपट्री के लिए दायां पॉइंटर।

बाइनरी ट्री का स्तर संख्या 0 से शुरू होता है और यह 'n' तक जा सकता है जो कोई भी धनात्मक संख्या हो सकती है। इसलिए, हमें स्तर 'k' दिया गया है और प्रोग्राम को दिए गए 'k' स्तर पर नोड्स का गुणनफल निकालना होगा।

बाइनरी ट्री में, यदि मान लें हमें k=2 का मान दिया गया है

तो स्तर 2 पर नोड्स हैं - 40, 50, 60

गुणनफल = 40*50*60 = 1,20,000

C++ में स्ट्रिंग के रूप में दर्शाए गए ट्री में k-वें स्तर पर नोड्स का गुणनफल

इनपुट

(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

  1. C++ में पूर्ण बाइनरी ट्री के नोड्स गिनें C++ में पूर्ण बाइनरी ट्री के नोड्स गिनें

    मान लीजिए हमारे पास एक पूर्ण बाइनरी ट्री है, हमें नोड्स की संख्या गिननी है। तो यदि ट्री इस तरह है −तो आउटपुट 6 होगा।इसे हल करने के लिए, हम इन चरणों का पालन करेंगेयह रिकर्सिव दृष्टिकोण का उपयोग करेगा। यह मेथड, countNodes() रूट को आर्गुमेंट के रूप में ले रहा है।hr := 0 और hl := 0दो नोड्स l और r

  1. C++ में बाइनरी ट्री में अधिकतम लेवल उत्पाद ढूंढें C++ में बाइनरी ट्री में अधिकतम लेवल उत्पाद ढूंढें

    मान लीजिए, एक बाइनरी ट्री दिया गया है। इसमें पॉजिटिव और नेगेटिव नोड्स हैं। हमें इसके प्रत्येक लेवल पर अधिकतम उत्पाद ढूंढना है। इसे ट्री मानें, तो लेवल 0 का उत्पाद 4 है, लेवल 1 का उत्पाद 2 * -5 = -10 है, और लेवल 2 का उत्पाद -1 * 3 * -2 * 6 = 36 है। तो यह अधिकतम है। इसे हल करने के लिए, हम ट्री का

  1. C++ प्रोग्राम: बाइनरी ट्री में सभी नोड्स के लेवल प्रिंट करना C++ प्रोग्राम: बाइनरी ट्री में सभी नोड्स के लेवल प्रिंट करना

    दिए गए बाइनरी ट्री में, कार्य 1 से n तक शुरू होने वाले प्रत्येक कुंजी से जुड़े लेवल को प्रिंट करना है जो एक नोड में संग्रहीत है। उपरोक्त ट्री में नोड्स हैं - 10 at level 1 3 and 211 at level 2 140, 162, 100 and 146 at level 3 दिए गए कुंजी के लिए प्रोग्राम को उस विशेष कुंजी का लेवल प्रिंट करना होगा।