इस समस्या में, हमें एक बाइनरी ट्री दिया जाता है और हमें बाइनरी ट्री के सभी आंतरिक नोड्स को प्रिंट करना होता है।
बाइनरी ट्री एक पेड़ है जिसमें एक नोड में अधिकतम 2 चाइल्ड नोड हो सकते हैं। नोड या वर्टेक्स में कोई नोड नहीं हो सकता है, एक बच्चा या दो चाइल्ड नोड हो सकते हैं।
उदाहरण -
आंतरिक नोड एक नोड है जिसमें कम से कम एक बच्चा हो सकता है यानी नॉन-लीफ नोड एक आंतरिक नोड है।
आइए समस्या को समझने के लिए एक उदाहरण लेते हैं -
आउटपुट - 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. हैं