Computer >> 컴퓨터 >  >> 프로그램 작성 >> C++

C++에서 이진 검색 트리의 모든 짝수 노드 인쇄


이 문제에서는 이진 검색 트리가 제공됩니다. 우리의 임무는 이진 검색 트리의 모든 짝수 값 노드를 인쇄하는 것입니다.

이진 검색 트리 다음 조건을 따르는 이진 트리입니다 -

  • 왼쪽 하위 트리는 항상 상위 노드보다 작은 값을 가진 노드를 포함합니다.

  • 맞습니다. 하위 트리는 항상 상위 노드보다 큰 값을 가진 노드를 포함합니다.

  • 모든 노드는 위의 2가지 규칙을 따라야 합니다.

이진 검색 트리의 예 -

C++에서 이진 검색 트리의 모든 짝수 노드 인쇄

문제를 이해하기 위해 예를 들어 보겠습니다 -

C++에서 이진 검색 트리의 모든 짝수 노드 인쇄

출력 − 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