কম্পিউটার

একটি বাইনারি গাছের গভীরতম বাম পাতা খুঁজে পেতে C++ প্রোগ্রাম


একটি বাইনারি গাছ যার সর্বাধিক দুটি সন্তান রয়েছে, বাম শিশু এবং ডান শিশু হিসাবে নির্দিষ্ট করা হয়েছে৷ এটি একটি বাইনারি গাছের গভীরতম বাম পাতা খুঁজে পাওয়ার জন্য একটি C++ প্রোগ্রাম

অ্যালগরিদম

শুরু করুন। ফাংশন deepestLLeafutil() একটি প্রদত্ত বাইনারি গাছের গভীরতম বাম পাতা খুঁজে বের করে:lvel বর্তমান নোডের স্তর। maxlvel এখন পর্যন্ত isLeft পাওয়া গভীরতম বাম পাতার নোডের নির্দেশক নির্দেশ করে যে এই নোডটি তার পিতামাতার resPtr এর বাম সন্তান ফলাফলের পয়েন্টার হল যদি রুট Null এর সমান হয় তাহলে রিটার্ন করুন। এই নোডের একটি বাম পাতা থাকলে এবং এর স্তর বর্তমান ফলাফলের সর্বোচ্চ স্তরের চেয়ে বেশি হলে ফলাফল আপডেট করুন৷ বাম এবং ডান সাবট্রির জন্য পুনরাবৃত্তভাবে ফাংশন deepestLLeafutil() কল করুন। শেষ।

উদাহরণ কোড

#include  namespace ব্যবহার করে std;struct n { int v; n *l, *r;};void deepestLLeafutil(n *root, int lvel, int *maxvel, bool isLeft, n **resPtr) { যদি (root ==NULL) ফেরত আসে; যদি (isLeft &&!root->l &&!root->r &&lvel> *maxvel) { *resPtr =root; *maxvel =lvel; প্রত্যাবর্তন } deepestLLeafutil(root->l, lvel + 1, maxvel, true, resPtr); deepestLLeafutil(root->r, lvel + 1, maxvel, false, resPtr);}n* deepestLLeaf(n *root) { int maxlevel =0; n *res =NULL; deepestLLeafutil(root, 0, &maxlevel, false, &res); রিটার্ন res;}n *newnode(int d) { n *t =new n; t->v =d; t->l =t->r =NULL; রিটার্ন t;}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); n *res =deepestLLeaf(root); if (res) cout <<"গভীরতম বাম পাতা হল " <v; else cout <<"প্রদত্ত গাছে কোন পাতা নেই"; রিটার্ন 0;

আউটপুট

গভীরতম বাম পাতা 6

  1. C++ এ একটি বাইনারি গাছের নিকটতম পাতাটি খুঁজুন

  2. C++ এ একটি বাইনারি ট্রির দুটি নোডের মধ্যে দূরত্ব খুঁজুন

  3. একটি বাইনারি অনুসন্ধান গাছে বাম ঘূর্ণন সম্পাদনের জন্য C++ প্রোগ্রাম

  4. পাইথনে একটি বাইনারি গাছে কে-দৈর্ঘ্যের পাথ খুঁজে বের করার জন্য প্রোগ্রাম