এটি একটি C++ প্রোগ্রাম যা বাইনারি সার্চ পদ্ধতি ব্যবহার করে একটি দেওয়া সংখ্যার ঘটনার সংখ্যা খুঁজে বের করে।
অ্যালগরিদম
শুরু
ফাংশন Insert() ট্রিতে নোড ইন্সার্ট করার জন্য:
আর্গুমেন্ট:
root, d.
ফাংশনের বডি:
আর্গুমেন্ট লিস্ট থেকে ডেটা ব্যবহার করে নোড তৈরি করুন।
যদি ট্রি সম্পূর্ণ খালি থাকে, তবে নতুন নোডকে রুট হিসেবে ইন্সার্ট করুন।
যদি d == tmp->data, তবে সেই নির্দিষ্ট নোডের কাউন্ট বাড়ান।
যদি d < tmp->data, তবে tmp পয়েন্টারকে বাম চাইল্ডে সরান।
যদি d > tmp->data, তবে tmp পয়েন্টারকে ডান চাইল্ডে সরান।
শেষ
শুরু
ফাংশন SearchNode() ট্রিতে আইটেম সার্চ করার জন্য:
আর্গুমেন্ট:
root, d.
ফাংশনের বডি:
ফর লুপ চালান যতক্ষণ না temp NULL পয়েন্টার নির্দেশ করে অথবা ডেটা আইটেম পাওয়া যায়।
যদি d < tmp->data, tmp পয়েন্টারকে বাম চাইল্ডে সরান।
যদি d > tmp->data, tmp পয়েন্টারকে ডান চাইল্ডে সরান।
যদি d == tmp->data, আইটেম পাওয়া গেলে এবং এর কাউন্ট প্রিন্ট করুন এবং main-এ ফিরে যান।
অন্যথায়
ডেটা পাওয়া যায়নি প্রিন্ট করুন।
শেষ
উদাহরণ
#include <iostream>
using namespace std;
struct nod { // নোড ডিক্লেয়ারেশন
int data;
int cnt;
nod* l;
nod* r;
};
nod* CreateNod(int d) { // নতুন নোড তৈরি
nod* newnod = new nod;
newnod->data = d;
newnod->cnt = 1;
newnod->l = NULL;
newnod->r = NULL;
return newnod;
}
nod* Insert(nod* root, int d) { // ইন্সারশন করা
nod* tmp = CreateNod(d);
nod* t = new nod;
t = root;
if (root == NULL)
root = tmp;
else {
while (t != NULL) {
if (t->data == d) {
t->cnt++;
break;
} else if (t->data < d) {
if (t->r == NULL) {
t->r = tmp;
break;
}
t = t->r;
} else if (t->data > d) {
if (t->l == NULL) {
t->l = tmp;
break;
}
t = t->l;
}
}
}
return root;
}
void SearchNode(nod* root, int d) { // সার্চ করা
nod* tmp = new nod;
tmp = root;
while (tmp != NULL) {
if (tmp->data == d) {
cout << "\nData item " << d << " is present " << tmp->cnt << " number of times.";
return;
} else if (tmp->data > d)
tmp = tmp->l;
else
tmp = tmp->r;
}
cout << "\n Data not found";
return;
}
int main() {
char c;
int n, i, a[20] = {8,1,3,6,4,7,10,14,13,7,6,1,26,4,26,20,21,12,10,1}; // অ্যারে এলিমেন্ট নিন
nod* root = new nod;
root = NULL;
for (i = 0; i < 20; i++)
root = Insert(root, a[i]);
up:
cout << "\nEnter the Element to be searched: ";
cin >> n;
SearchNode(root, n);
cout << "\n\nWant to search more...enter choice(y/n)?";
cin >> c;
if (c == 'Y' || c == 'y')
goto up;
return 0;
}
আউটপুট
Enter the Element to be searched: 7 Data item 7 is present 2 number of times. Want to search more...enter choice(y/n)?y Enter the Element to be searched: 6 Data item 6 is present 2 number of times. Want to search more...enter choice(y/n)?y Enter the Element to be searched: 4 Data item 4 is present 2 number of times. Want to search more...enter choice(y/n)?y Enter the Element to be searched: 15 Data not found Want to search more...enter choice(y/n)?n