কম্পিউটার

C++ এ আপেক্ষিক অবস্থান সহ সমস্ত রুট থেকে পাতার পাথ প্রিন্ট করুন


এই সমস্যায়, আমরা একটি বাইনারি গাছ দেওয়া হয়. এবং আমাদের মূল থেকে গাছের পাতা পর্যন্ত সমস্ত পথ প্রিন্ট করতে হবে। এছাড়াও, নোডের আপেক্ষিক অবস্থান দেখাতে আন্ডারস্কোর “_” যোগ করুন।

বিষয়টি আরও ভালোভাবে বোঝার জন্য একটি উদাহরণ নেওয়া যাক -

ইনপুট -

C++ এ আপেক্ষিক অবস্থান সহ সমস্ত রুট থেকে পাতার পাথ প্রিন্ট করুন

আউটপুট -

<প্রে>_ _ 3_ 91_39_73_ 4_ _ 239 41 7 6 23_ 46

এই সমস্যা সমাধানের জন্য, আমরা গাছের উপাদানগুলির উল্লম্ব ক্রম ধারণাটি ব্যবহার করব।

C++ এ আপেক্ষিক অবস্থান সহ সমস্ত রুট থেকে পাতার পাথ প্রিন্ট করুন

এর উপর ভিত্তি করে, আমরা মূল থেকে পাতা পর্যন্ত পথ প্রিন্ট করব।

অ্যালগরিদম

ধাপ 1:প্রি-অর্ডার ট্রাভার্সাল ব্যবহার করে বাইনারি ট্রিটি অতিক্রম করুন। এবং ট্রাভার্সালে অর্ডারের উপর ভিত্তি করে অনুভূমিক দূরত্ব গণনা করুন। রুটের অনুভূমিক দূরত্ব হল 0 এবং উপরের চিত্রের মতো প্রক্রিয়া করা হয়েছে৷ ধাপ 2:এবং লিফ নোডে যাওয়ার সময়, শেষে একটি আন্ডারস্কোর "_" দিয়ে পথটি প্রিন্ট করুন৷

উদাহরণ

#includeনেমস্পেস std ব্যবহার করে;#ডিফাইন MAX_PATH_SIZE 1000struct নোড{char data; নোড *বাম, *ডান;};নোড * newNode(char data){ struct Node *temp =new Node; temp->ডেটা =ডেটা; temp->left =temp->right =NULL; রিটার্ন temp;}struct PATH{ int horizontalDistance; char key;};void printPath(ভেক্টর  পথ, int সাইজ){ int ন্যূনতম horizontalDistance =INT_MAX; PATH পি; জন্য (int it=0; it &AllPath, int horizontalDistance, int order ){ if(root ==NULL) রিটার্ন; যদি (root->left ==NULL &&root->right ==NULL){ AllPath[order] =(PATH { অনুভূমিক দূরত্ব, রুট-> ডেটা }); প্রিন্টপাথ(অলপাথ, অর্ডার+1); প্রত্যাবর্তন } AllPath[order] =(PATH { অনুভূমিক দূরত্ব, রুট->ডেটা }); printAllRtLPpaths(root->left, AllPath, horizontalDistance-1, order+1); printAllRtLPpaths(root->right, AllPath, horizontalDistance+1, order+1);}void printRootToLeafPath(নোড *root){ যদি (root ==NULL) ফেরত আসে; ভেক্টর Allpaths(MAX_PATH_SIZE); printAllRtLPpaths(root, Allpaths, 0, 0);}int main(){ Node *root =newNode('3'); root->left =newNode('9'); root->right =newNode('4'); root->left->left =newNode('1'); root->left->right =newNode('7'); root->right->left =newNode('6'); root->right->right =newNode('2'); printRootToLeafPath(রুট); রিটার্ন 0;

আউটপুট

_ _ 3_ 91 পরবর্তী পথ_ 39_ 7 পরবর্তী পথ3_ 46 পরবর্তী পথ3_ 4_ _ 2

  1. C++ এ আপেক্ষিক অবস্থান সহ সমস্ত রুট থেকে পাতার পাথ প্রিন্ট করুন

  2. একটি প্রদত্ত উত্স থেকে একটি গন্তব্য C++ এ সমস্ত পথ প্রিন্ট করুন

  3. C++ ব্যবহার করে রিকার্সন ব্যবহার না করেই রুট থেকে পাতার পাথ প্রিন্ট করার জন্য প্রোগ্রাম

  4. C++ প্রোগ্রামিং-এ রিকার্সন ব্যবহার না করে পাতার পথে রুট প্রিন্ট করুন।