একটি বাইনারি গাছ যার সর্বাধিক দুটি সন্তান রয়েছে, বাম শিশু এবং ডান শিশু হিসাবে নির্দিষ্ট করা হয়েছে৷ এটি একটি বাইনারি ট্রিতে সর্বনিম্ন সাধারণ পূর্বপুরুষ খুঁজে বের করার জন্য একটি C++ প্রোগ্রাম।
অ্যালগরিদম
ডাটা ডিক্লেয়ার করার জন্য একটি স্ট্রাকচার n তৈরি করা শুরু করুন d, একটি বাম চাইল্ড পয়েন্টার l এবং একটি ডান চাইল্ড পয়েন্টার r। নিউনোড তৈরি করতে একটি ফাংশন তৈরি করুন। একটি বাইনারি গাছের সর্বনিম্ন সাধারণ পূর্বপুরুষ খুঁজে পেতে একটি ফাংশন LCA() কল করুন:গাছে নোড n1 এবং n2 উপস্থিত রয়েছে। যদি রুট নাল হয়, তাহলে রিটার্ন করুন। রুট শূন্য না হলে দুটি ক্ষেত্রে আছে। ক) যদি n1 এবং n2 উভয়ই মূলের থেকে ছোট হয়, তাহলে LCA বাম দিকে অবস্থিত। b) যদি n1 এবং n2 উভয়ই মূলের চেয়ে বড় হয়, তাহলে LCA ডানদিকে অবস্থিত।উদাহরণ কোড
#includenamespace ব্যবহার করে std;struct n { int d; struct n*l, *r;}*p =NULL;struct n* newnode(int d) { p =new n; p->d =d; p->l =p->r =NULL; return(p);}struct n *LCA(struct n* root, int n1, int n2) { if (root ==NULL) NULL রিটার্ন করুন; যদি (root->d> n1 &&root->d> n2) LCA(root->l, n1, n2) রিটার্ন করে; যদি (root->d d r, n1, n2) রিটার্ন করে; return root;}int main() { n* root =newnode(9); root->l =newnode(7); root->r =newnode(10); root->l->l =newnode(6); root->r->l=newnode(8); root->r->r =newnode(19); root->r->l->r =newnode(4); root->r->r->r =newnode(20); int n1 =20, n2 =4; struct n *t =LCA(root, n1, n2); cout<<"20 এবং 4-এর সর্বনিম্ন সাধারণ পূর্বপুরুষ হল:" < d< d< আউটপুট
20 এবং 4-এর সর্বনিম্ন সাধারণ পূর্বপুরুষ হল:97 এবং 6-এর সর্বনিম্ন সাধারণ পূর্বপুরুষ হল:7