Computer >> Máy Tính >  >> Lập trình >> C ++

Đếm tất cả các cặp nút liền kề có XOR là số lẻ trong C ++

Trong hướng dẫn này, chúng ta sẽ thảo luận về một chương trình để tìm số cặp nút liền kề có XOR là một số lẻ.

Đối với điều này, chúng tôi sẽ được cung cấp một cây nhị phân. Nhiệm vụ của chúng ta là đếm số cặp phần tử liền kề có XOR là số lẻ.

Ví dụ

#include <iostream>
using namespace std;
//node structure of tree
struct Node {
   int data;
   struct Node *left, *right;
};
//finding the pairs whose XOR
//is odd
int count_pair(Node* root, Node *parent=NULL){
   if (root == NULL)
      return 0;
   //checking pair of XOR is odd or not
   int res = 0;
   if (parent != NULL && (parent->data ^ root->data) % 2)
      res++;
   return res + count_pair(root->left, root) + count_pair(root->right, root);
}
//creation of new node
Node* newNode(int data){
   Node* temp = new Node;
   temp->data = data;
   temp->left = NULL;
   temp->right = NULL;
   return temp;
}
int main(){
   struct Node* root = NULL;
   root = newNode(15);
   root->left = newNode(13);
   root->left->left = newNode(12);
   root->left->right = newNode(14);
   root->right = newNode(18);
   root->right->left = newNode(17);
   root->right->right = newNode(21);
   printf("%d ", count_pair(root));
   return 0;
}

Đầu ra

5