이 문제에서는 이진 트리가 제공됩니다. 우리의 임무는 전체 노드인 트리의 모든 노드를 인쇄하는 것입니다.
이진 트리 노드가 최대 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