Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

นับคู่โหนดติดกันที่ XOR เป็นเลขคี่ใน C++


ในบทช่วยสอนนี้ เราจะอภิบายโปรแกรมเพื่อหาจำนวนคู่ของโหนดติดกันที่ XOR เป็นเลขคี่

สำหรับเรื่องนี้ เราจะได้รับต้นไม้ไบนารี งานของเราคือนับจำนวนคู่ขององค์ประกอบติดกันที่ XOR เป็นเลขคี่

ตัวอย่าง

#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;
}

เอาต์พุต

5