이 문제에서는 이진 트리가 제공됩니다. 우리의 임무는 전체 노드인 트리의 모든 노드를 인쇄하는 것입니다.
이진 트리 노드가 최대 2개의 자식 노드를 가질 수 있는 트리입니다. 노드 또는 정점에는 노드가 없을 수 있습니다. 하나의 자식 또는 두 개의 자식 노드가 있을 수 있습니다.
예시 -

전체 노드 왼쪽과 오른쪽 자식을 모두 사용할 수 있는 노드입니다. 즉, 왼쪽과 오른쪽 자식이 있는 노드가 전체 노드입니다. 위의 이진 트리에서 4와 9는 전체 노드입니다.
문제를 이해하기 위해 예를 들어 보겠습니다 -

출력 − 4 9
이 문제를 해결하기 위한 간단하고 쉬운 접근 방식은 순회 알고리즘을 사용하여 트리를 순회하는 것입니다. 현재 노드에 왼쪽 및 오른쪽 자식 또는 노드가 있는지 확인합니다. 그렇다면 노드의 값을 인쇄하고 그렇지 않으면 그대로 둡니다.
예시
우리의 솔루션을 설명하는 프로그램,
#include <iostream>
using namespace std;
struct Node{
int data;
struct Node *left, *right;
};
Node *insertNode(int data){
Node *temp = new Node;
temp->data = data;
temp->left = temp->right = NULL;
return temp;
}
void printFullNode(Node *root){
if (root != NULL){
printFullNode(root->left);
if (root->left != NULL && root->right != NULL)
cout<<root->data<<"\t";
printFullNode(root->right);
}
}
int main(){
Node* root = insertNode(100);
root->left = insertNode(56);
root->right = insertNode(12);
root->left->left = insertNode(89);
root->right->left = insertNode(32);
root->right->right = insertNode(45);
cout<<"All full nodes of the tree are :\n";
printFullNode(root);
return 0;
} 출력
All full nodes of the tree are − 100 12