কম্পিউটার

C++ এ DFS ব্যবহার করে একটি n-ary গাছের সমস্ত পাতার নোড প্রিন্ট করুন


এই সমস্যায়, আমাদের একটি 2-ডি অ্যারে দেওয়া হয়েছে যেখানে একটি n-ary এর প্রান্ত রয়েছে যেখানে প্রান্তটি n-ary গাছের প্রান্তকে সংজ্ঞায়িত করে। আমাদের তৈরি করা a-ary গাছের সমস্ত লিফ নোড প্রিন্ট করতে হবে।

এন-আরি গাছ এমন একটি গাছ যার সর্বাধিক n শিশু রয়েছে অর্থাৎ একটি নোডে 1, 2, ...n চাইল্ড নোড থাকতে পারে৷

আসুন সমস্যাটি বোঝার জন্য একটি উদাহরণ দেখি -

Input: edge[][] = {{5,8}, {5,6}, {8,1}, {8,4}, {6,7}}
Output: 1 4 7

ব্যাখ্যা - চলুন এজ অ্যারে -

ব্যবহার করে একটি ট্রি তৈরি করি

C++ এ DFS ব্যবহার করে একটি n-ary গাছের সমস্ত পাতার নোড প্রিন্ট করুন

এই গাছের পাতার নোডগুলি হল 1, 4, 7৷

এই সমস্যাটি সমাধান করার জন্য, আমরা DFS ব্যবহার করে গাছটি অতিক্রম করব (এটি প্রতিটি সাবট্রির লিফ নোড খুঁজে পাবে)। এছাড়াও, অ্যারের পরিদর্শন করা নোডগুলি চিহ্নিত করা হয়েছে। যদি নোডের একটি শিশু থাকে (যদি লিফ নোড না হয়), তাহলে আমরা মান ফ্ল্যাগ করব এবং চাইল্ড নোড ছাড়াই নোড প্রিন্ট করব৷

উদাহরণ

এই প্রোগ্রামটি আমাদের সমাধানের বাস্তবায়ন দেখায় -

#include <bits/stdc++.h>
using namespace std;
void DFS(list<int> t[], int node, int parent) {
   int flag = 0;
   for (auto ir : t[node]) {
      if (ir != parent) {
         flag = 1;
         DFS(t, ir, node);
      }
   }
   if (flag == 0)
      cout<<node<<"\t";
}
int main() {
   list<int> t[1005];
   pair<int, int> edges[] = {
      { 1, 2 },
      { 1, 3 },
      { 2, 4 },
      { 3, 5 },
      { 3, 6 },
      { 3, 7 },
      { 6, 8 }
   };
   int cnt = sizeof(edges) / sizeof(edges[0]);
   int node = cnt + 1;
   for (int i = 0; i < cnt; i++) {
      t[edges[i].first].push_back(edges[i].second);
      t[edges[i].second].push_back(edges[i].first);
   }
   cout<<"Leaf nodes of the tree are:\n";
   DFS(t, 1, 0);
   return 0;
}

আউটপুট

Leaf nodes of the tree are −
4 5 8 7

  1. C++ এ বাইনারি সার্চ ট্রির সমস্ত বিজোড় নোড প্রিন্ট করুন

  2. C++ ব্যবহার করে একটি গাছের বিজোড় স্তরে নোডগুলি প্রিন্ট করার জন্য প্রোগ্রাম

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

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