কম্পিউটার

বাইনারি গাছের নোডগুলি প্রিন্ট করুন যেহেতু তারা C++ প্রোগ্রামিং-এ লিফ নোড হয়ে যায়।


একটি বাইনারি গাছ দেওয়া হলে, আমাদের তার পাতার নোডগুলিকে প্রিন্ট করতে হবে এবং তারপরে আমাদের সেই পাতার নোডগুলি সরিয়ে ফেলতে হবে এবং তারপরে গাছে কোনও নোড অবশিষ্ট না থাকা পর্যন্ত পুনরাবৃত্তি করতে হবে৷

উদাহরণ

বাইনারি গাছের নোডগুলি প্রিন্ট করুন যেহেতু তারা C++ প্রোগ্রামিং-এ লিফ নোড হয়ে যায়।


বাইনারি গাছের নোডগুলি প্রিন্ট করুন যেহেতু তারা C++ প্রোগ্রামিং-এ লিফ নোড হয়ে যায়।


বাইনারি গাছের নোডগুলি প্রিন্ট করুন যেহেতু তারা C++ প্রোগ্রামিং-এ লিফ নোড হয়ে যায়।

তাই সমস্যার আউটপুট হওয়া উচিত −

6 7 9 13 143 421

পন্থা

আমরা একটি পদ্ধতি গ্রহণ করেছি যেখানে আমরা DFS প্রয়োগ করছি।

একটি অস্থায়ী মান প্রয়োগ করার জন্য প্রতিটি মানের জন্য শূন্য নির্ধারণ করা হয় এবং তারপর সর্বোচ্চ (উভয় সন্তানের মান)+1 মান সহ সমস্ত নোড বরাদ্দ করা হয় .

অ্যালগরিদম

শুরু পদক্ষেপ 1-> ডেটা মেম্বারদের ডেটা, অর্ডার, *বাম, *ডানস্টেপ 2-> একটি স্ট্রাকট নোড সংজ্ঞায়িত করুন>ডেটা =ডেটা, নোড->অর্ডার =অর্ডার, নোড->বাম =শূন্য, নোড->ডান =শূন্য, রিটার্ন (নোড) ফাংশন বাতিল পোস্টড(স্ট্রাকট নোড* নোড, ভেক্টর<পেয়ার>&v )ধাপ 1-> IF নোড ==তারপরে শূন্য, রিটার্নস্টেপ 2-> কল ফাংশন পোস্টড(নোড->বাম, v)স্টেপ 3-> কল ফাংশন পোস্টড(নোড->ডান, v)স্টেপ 4-> যদি নোড-> ডান ==NULL &&node->left ==NULL তারপর, নোড-> অর্ডার 1 হিসাবে সেট করুন v.push_back(make_pair(node->order, node->data)) ELSE node->order =max((node-> বাম)->অর্ডার, (নোড->ডান)->অর্ডার) + 1 v.push_back(make_pair(node->order, node->data))END IFFUNCTION void printLeafNodes(int n, vector>&v)স্টেপ 1-> সাজান(v.begin(), v.end())Step 2-> লুপ ফর i =0 এবং i  struct Node* root =newNode(8, 0)Step 2-> Declare and Set n =9STEP 3-> CALL postod(root, v); step 4-> CALL printLeafNodes(n, v);<এর মত একটি রুট নোড তৈরি করুন। /প্রে> 

উদাহরণ

#include নেমস্পেস ব্যবহার করে std;struct Node { int data; int অর্ডার; struct নোড* বাম; struct Node* right;};struct Node* newNode(int data, int order){struct Node* node =new Node; নোড->ডেটা =ডেটা; node->order =অর্ডার; node->left =NULL; node->right =NULL; return (node);}void postod(struct Node* node, vector>&v){ if (node ​​==NULL) রিটার্ন; /* বাম শিশুর উপর প্রথম পুনরাবৃত্তি */ postod(node->left, v); /* এখন ডান চাইল্ডে পুনরাবৃত্তি হয় */ postod(node->right, v); // বর্তমান নোড যদি লিফ নোড হয়, তাহলে এর ক্রম 1 হবে যদি (নোড->ডান ==NULL &&node->left ==NULL) { node->order =1; // নির্ধারিত মান এবং গাছের মূল্যের জোড়া তৈরি করুন v.push_back(make_pair(node->order, node->data)); } else { node->order =max((node->left)->order, (node->right)->order) + 1; v.push_back(make_pair(node->order, node->data)); }} void printLeafNodes(int n, vector>&v){ sort(v.begin(), v.end()); for (int i =0; i left =newNode(2, 0); root->right =newNode(3, 0); root->left->left =newNode(4, 0); root->left->right =newNode(6, 0); root->right->left =newNode(14, 0); root->right->right =newNode(9, 0); root->left->left->left =newNode(7, 0); root->left->left->right =newNode(13, 0); int n =9; ভেক্টর> v; postod(root, v); printLeafNodes(n, v); রিটার্ন 0;

আউটপুট

এই প্রোগ্রামটি আউটপুট −

প্রিন্ট করবে
6 7 9 13 143 421

  1. C++ প্রোগ্রামিং-এ একটি গাছের বিজোড় স্তরে নোডগুলি প্রিন্ট করুন।

  2. C++ প্রোগ্রামিং-এ একটি বাইনারি ট্রিতে সমস্ত নোডের লেভেল প্রিন্ট করুন।

  3. C++ প্রোগ্রামিং-এ বাইনারি ট্রির প্রতিটি নোডে সেট বিটের সংখ্যা প্রিন্ট করুন।

  4. C++ এ একটি স্ট্যাক ব্যবহার করে বাইনারি ট্রিতে বাম থেকে ডানে লিফ নোড প্রিন্ট করুন