इस समस्या में, हमें एक बाइनरी ट्री दी गई है और हमें बाइनरी ट्री के सभी इंटरनल नोड्स प्रिंट करने हैं।
बाइनरी ट्री
बाइनरी ट्री एक ट्री है जिसमें एक नोड के अधिकतम 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