ในปัญหานี้ เราได้รับไบนารีทรีและเราต้องพิมพ์โหนดภายในทั้งหมดของแผนผังไบนารี
ต้นไม้ไบนารี เป็นต้นไม้ที่โหนดสามารถมีโหนดย่อยได้สูงสุด 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