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

C++ में बाइनरी ट्री के सभी लीफ नोड्स का गुणनफल


एक बाइनरी ट्री दिया गया है जिसमें नोड्स हैं और कार्य दिए गए बाइनरी ट्री के सभी लीफ नोड्स का गुणनफल निकालना है।

लीफ नोड्स अंतिम नोड्स हैं जिनके कोई बच्चे नहीं होते। एक ट्री में, एक नोड रूट नोड को छोड़कर माता-पिता नोड या बच्चा नोड के रूप में कार्य कर सकता है जो केवल माता-पिता नोड हो सकता है। इसलिए जिन नोड्स का दायां और बायां पॉइंटर NULL होता है वे लीफ नोड्स होते हैं।

इनपुट

C++ में बाइनरी ट्री के सभी लीफ नोड्स का गुणनफल

आउटपुट

लीफ नोड्स हैं -: 23, 34, 25 गुणनफल-: 23*34*25 = 19550

दृष्टिकोण

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

एल्गोरिदम

शुरुआत
चरण 1 → नोड की संरचना बनाएं और temp, next और head को संरचना नोड के पॉइंटर के रूप में
struct node {
    int data
    Create node *left, *right
}

चरण 2 → ट्री में नोड डालने के लिए फ़ंक्शन घोषित करें
node* new_node(int data) {
    node* temp = new node();
    temp->data = data;
    temp->left = temp->right = NULL;
    return temp;
}

चरण 3 → सभी लीफ नोड्स का गुणनफल निकालने के लिए फ़ंक्शन घोषित करें
void leaf(node* root, int &product) {
    if (!root) return;
    if (!root->left && !root->right)
        product *= root->data;
    leaf(root->left, product);
    leaf(root->right, product);
}

चरण 4 → main() में
node* root = new_node(10);
root->left = new_node(20);
root->left->left = new_node(30);
int product = 1;
leaf(root, product);
product प्रदर्शित करें
रुकें

उदाहरण

#include <bits/stdc++.h>
using namespace std;

struct node {
    int data;
    node *left, *right;
};

node* new_node(int data) {
    node* temp = new node();
    temp->data = data;
    temp->left = temp->right = NULL;
    return temp;
}

void leaf(node* root, int &product) {
    if (!root) return;
    if (!root->left && !root->right)
        product *= root->data;
    leaf(root->left, product);
    leaf(root->right, product);
}

int main() {
    node* root = new_node(10);
    root->left = new_node(20);
    root->left->left = new_node(30);
    root->left->right = new_node(40);
    root->right = new_node(50);
    root->right->right = new_node(60);
    root->right->left = new_node(70);
    int product = 1;
    leaf(root, product);
    cout << "लीफ नोड्स का गुणनफल है: " << product;
    return 0;
}

आउटपुट

यदि उपरोक्त कोड चलाया जाता है तो यह निम्नलिखित आउटपुट उत्पन्न करेगा:

लीफ नोड्स का गुणनफल है: 5040000

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

    इस समस्या में, हमें एक बाइनरी सर्च ट्री दी गई है और हमें उन सभी नोड्स को प्रिंट करना है जिनके मान विषम हैं। बाइनरी सर्च ट्री बाइनरी सर्च ट्री एक विशेष प्रकार का ट्री है जिसमें निम्नलिखित गुण होते हैं: बायां सबट्री हमेशा रूट नोड से छोटे मान रखता है। दायां सबट्री हमेशा रूट नोड से बड़े मान रखता है।

  1. C++ में दिए गए परफेक्ट बाइनरी ट्री के सभी नोड्स का योग ज्ञात करें C++ में दिए गए परफेक्ट बाइनरी ट्री के सभी नोड्स का योग ज्ञात करें

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

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

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