ในปัญหานี้ เราจะได้รับแผนผังการค้นหาแบบไบนารี งานของเราคือพิมพ์โหนดที่มีค่าทั้งหมดของแผนผังการค้นหาแบบไบนารี
แผนผังการค้นหาแบบไบนารี เป็นไบนารีทรีที่เป็นไปตามเงื่อนไขต่อไปนี้ -
-
โครงสร้างย่อยด้านซ้ายจะมีโหนดที่มีค่าน้อยกว่าโหนดหลักเสมอ
-
ถูกต้อง แผนผังย่อยจะมีโหนดที่มีค่ามากกว่าโหนดหลักเสมอ
-
โหนดทั้งหมดต้องปฏิบัติตามกฎ 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