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

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


इस समस्या में, हमें एक बाइनरी ट्री दी गई है और हमें बाइनरी ट्री के सभी इंटरनल नोड्स प्रिंट करने हैं।

बाइनरी ट्री

बाइनरी ट्री एक ट्री है जिसमें एक नोड के अधिकतम 2 चाइल्ड नोड्स हो सकते हैं। नोड या वर्टेक्स में कोई नोड नहीं, एक चाइल्ड या दो चाइल्ड नोड्स हो सकते हैं।

इंटरनल नोड

इंटरनल नोड वह नोड है जिसमें कम से कम एक चाइल्ड हो यानी नॉन-लीफ नोड इंटरनल नोड है।

उदाहरण

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

आउटपुट - 7 4 9

इस समस्या को हल करने के लिए, हम बाइनरी ट्री को BFS (ब्रेडथ-फर्स्ट सर्च) ट्रैवर्सल का उपयोग करके पार करेंगे।

ट्रैवर्सल के दौरान हम नोड्स को एक कतार में डालेंगे। जब हम कतार से एलिमेंट्स निकालेंगे, तो हम ट्री के उन सभी नोड्स को प्रिंट करेंगे जिनके कोई चाइल्ड नोड्स नहीं हैं।

उदाहरण

हमारा तर्क नीचे दिए गए कोड द्वारा लागू किया गया है:

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

struct Node { 
    int data; 
    Node *left, *right; 
    Node(int data) { 
        left = right = NULL; 
        this->data = data; 
    } 
}; 

void printNonLeafNodes(Node* root) { 
    queue<Node*> treeNodes; 
    treeNodes.push(root); 
    while (!treeNodes.empty()) { 
        Node* curr = treeNodes.front(); 
        treeNodes.pop(); 
        bool isInternal = 0; 
        if (curr->left) { 
            isInternal = 1; 
            treeNodes.push(curr->left); 
        } 
        if (curr->right) { 
            isInternal = 1; 
            treeNodes.push(curr->right); 
        } 
        if (isInternal) 
            cout << curr->data << "\t"; 
    } 
} 

int main() { 
    Node* root = new Node(43); 
    root->left = new Node(12); 
    root->right = new Node(78); 
    root->left->left = new Node(4); 
    root->right->left = new Node(9); 
    root->right->right = new Node(1); 
    root->right->right->right = new Node(50); 
    root->right->right->left = new Node(25); 
    cout << "All internal Nodes of the binary tree are :\n"; 
    printNonLeafNodes(root); 
    return 0; 
}

आउटपुट

All internal Nodes of the binary tree are - 43 12 78 1

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

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

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

    एक बाइनरी ट्री दिया गया है, हमें उसके लीफ नोड्स को प्रिंट करना है और फिर उन लीफ नोड्स को हटाना है और फिर तब तक दोहराना है जब तक ट्री में कोई नोड न बचे। उदाहरण तो समस्या का आउटपुट होना चाहिए - 6 7 9 13 14 3 4 2 1 दृष्टिकोण हमने एक ऐसा दृष्टिकोण अपनाया है जहां हम DFS लागू कर रहे हैं। एक अस्थायी म

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

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