একটি বাইনারি সার্চ ট্রি হল একটি সাজানো বাইনারি ট্রি যেখানে সমস্ত নোডের দুটি বৈশিষ্ট্য রয়েছে—
একটি নোডের ডান সাব-ট্রিতে মূল নোডের কী থেকে বড় একটি কী থাকে৷
একটি নোডের বাম সাব-ট্রিতে মূল নোডের কী থেকে কম বা সমান একটি কী থাকে৷
প্রতিটি নোডে দুটির বেশি সন্তান থাকা উচিত নয়৷
এটি একটি C++ প্রোগ্রাম যা একটি বাইনারি সার্চ ট্রিতে ডিকশনারি অপারেশন সম্পাদন করে।
অ্যালগরিদম
ঢোকানোর জন্য:
শুরু করুন ফাংশন সন্নিবেশ (int k) in =int(k mod max) p[in] =(n_type*) malloc(sizeof(n_type)) p[in]->d =k যদি (r[in] ==NULL) তারপর r[in] =p[in] r[in]->n =NULL t[in] =p[in] অন্য t[in] =r[in] যখন (t[in]-> n !=NULL) t[in] =t[in]->n t[in]->n=p[in]শেষ।
একটি মান অনুসন্ধানের জন্য:
শুরু করুন ডিক্লেয়ার ফাংশন সার্চ>d==k) তারপর "সার্চ কী পাওয়া গেছে" প্রিন্ট করুন। ফ্ল্যাগ =1 বিরতি অন্য t[in] =t[in]->n যদি (পতাকা ==0) প্রিন্ট "সার্চ কী পাওয়া যায়নি"। শেষ।
মোছার জন্য:
শুরু করুন ডিলিট_এলিমেন্ট(int k) in =int(k mod max) t[in] =r[in] যখন (t[in]->d!=k এবং t[in] !=NULL) p [in] =t[in] t[in] =t[in]->n p[in]->n =t[in]->n মুছে ফেলা উপাদান t[in]->d =-1 t[ in] =NULL free(t[in])End
উদাহরণ
#include#include নেমস্পেস ব্যবহার করে std;# সর্বোচ্চ 20typedef struct অভিধান সংজ্ঞায়িত করুন { int d; struct অভিধান *n;} n_type;n_type *p[max], *r[max], *t[max];class Dict { public:int in; ডিক্ট(); অকার্যকর সন্নিবেশ (int); অকার্যকর অনুসন্ধান (int); void delete_element(int);};int main(int argc, char **argv) { int v, choice, n, num; char c; ডিক্ট ডি; করুন { cout <<"\n1. তৈরি করুন"; cout <<"\n2. একটি মান অনুসন্ধান করুন"; cout<<"\n3. একটি মান মুছুন"; cout <<"\nআপনার পছন্দ লিখুন:"; cin>> পছন্দ; সুইচ (পছন্দ) { কেস 1:cout <<"\n সন্নিবেশ করা উপাদানগুলির সংখ্যা লিখুন:"; cin>> n; cout <<"\n সন্নিবেশ করাতে উপাদানগুলি লিখুন:"; জন্য (int i =0; i > সংখ্যা; d. সন্নিবেশ (সংখ্যা); } বিরতি; কেস 2:cout <<"\nঅনুসন্ধান করা উপাদানটি লিখুন:"; cin>> n; d. search(n); কেস 3:cout <<"\n মুছে ফেলার উপাদানটি লিখুন:"; cin>> n; d.delete_element(n); বিরতি ডিফল্ট:cout <<"\nঅবৈধ পছন্দ...."; বিরতি } cout <<"\nচালিয়ে যেতে y লিখুন......"; cin>> c; } while (c =='y');}Dict::Dict() { in =-1; জন্য (int i =0; i <সর্বোচ্চ; i++) { r[i] =NULL; p[i] =NULL; t[i] =NULL; }}void Dict::insert(int k) { in =int(k % max); p[in] =(n_type*) malloc(sizeof(n_type)); p[in] ->d =k; যদি (r[in] ==NULL) { r[in] =p[in]; r[in]->n =NULL; t[in] =p[in]; } else { t[in] =r[in]; যখন (t[in]->n !=NULL) t[in] =t[in]->n; t[in]->n=p[in]; }} void Dict::search(int k) { int flag =0; in=int(k % সর্বোচ্চ); t[in] =r[in]; যখন (t[in] !=NULL) { if (t[in]->d==k) { cout <<"\nসার্চ কী পাওয়া গেছে!!"; পতাকা =1; বিরতি } else t[in] =t[in]->n; } if (flag ==0) cout <<"\nsearch key পাওয়া যায়নি.......";}void Dict::delete_element(int k) { in =int(k % max); t[in] =r[in]; যখন (t[in]->d!=k &&t[in] !=NULL) { p[in] =t[in]; t[in] =t[in]->n; } p[in]->n =t[in]->n; cout <<"\n" < d <<" মুছে ফেলা হয়েছে।"; t[in] ->d =-1; t[in] =NULL; free(t[in]);}