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

พิมพ์โหนดคู่ใน Binary Search Tree ใน C++

ภาพรวมปัญหา

ได้รับ Binary Search Tree (BST) ต้องพิมพ์โหนดที่มีค่าเป็นเลขคู่ทั้งหมด

Binary Search Tree คืออะไร?

  • ลูกซ้ายมีค่าน้อยกว่าโหนดแม่
  • ลูกขวามีค่ามากกว่าโหนดแม่
  • ทุกโหนดต้องปฏิบัติตามกฎข้างต้น

ตัวอย่าง

พิมพ์โหนดคู่ใน Binary Search Tree ใน C++

Output: 2 4 6 8

วิธีแก้ปัญหา

ทำ Inorder Traversal (ซ้าย-ราก-ขวา) จะได้ค่าจากน้อยไปมาก ตรวจสอบแต่ละโหนดว่าหาร 2 ลงตัวหรือไม่

ตัวอย่างโค้ด C++

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

ผลลัพธ์ (Output)

All even nodes of the tree are:
12 30 54 80