이 문제에서는 이진 검색 트리가 제공됩니다. 우리의 임무는 이진 검색 트리의 모든 짝수 값 노드를 인쇄하는 것입니다.
이진 검색 트리 다음 조건을 따르는 이진 트리입니다 -
-
왼쪽 하위 트리는 항상 상위 노드보다 작은 값을 가진 노드를 포함합니다.
-
맞습니다. 하위 트리는 항상 상위 노드보다 큰 값을 가진 노드를 포함합니다.
-
모든 노드는 위의 2가지 규칙을 따라야 합니다.
이진 검색 트리의 예 -
문제를 이해하기 위해 예를 들어 보겠습니다 -
출력 − 2 4 6 8
이 문제를 해결하려면 이진 탐색 트리의 모든 노드를 탐색하고 현재 노드의 값을 확인해야 합니다. 짝수이면 노드를 인쇄하고 그렇지 않으면 그대로 둡니다.
예시
아래 코드는 로직의 작동을 설명합니다 -
#include <iostream> using namespace std; struct Node { int key; struct Node *left, *right; }; Node* newNode(int item){ Node* temp = new Node; temp->key = item; temp->left = temp->right = NULL; return temp; } Node* insertNode(Node* node, int key){ if (node == NULL) return newNode(key); if (key < node->key) node->left = insertNode(node->left, key); else node->right = insertNode(node->right, key); return node; } void printEvenNode(Node* root){ if (root != NULL) { printEvenNode(root->left); if (root->key % 2 == 0) cout<<root->key<<"\t"; printEvenNode(root->right); } } int main(){ Node* root = NULL; root = insertNode(root, 54); root = insertNode(root, 43); root = insertNode(root, 12); root = insertNode(root, 30); root = insertNode(root, 89); root = insertNode(root, 67); root = insertNode(root, 80); cout<<"All even nodes of the tree are :\n"; printEvenNode(root); return 0; }
출력
트리의 모든 짝수 노드는 -
12 30 54 80