কম্পিউটার

C++ এ বাইনারি ট্রির পোস্টঅর্ডার ট্রাভার্সালে n-ম নোড খুঁজুন


এই সমস্যায়, আমাদের একটি বাইনারি ট্রি এবং একটি পূর্ণসংখ্যা N দেওয়া হয়েছে। কাজটি হল একটি বাইনারি ট্রির পোস্টঅর্ডার ট্রাভার্সালে n-ম নোড খুঁজে বের করা।

একটি বাইনারি গাছের একটি বিশেষ শর্ত রয়েছে যে প্রতিটি নোডে সর্বাধিক দুটি শিশু থাকতে পারে৷

ট্রাভার্সাল হল একটি গাছের সমস্ত নোড দেখার প্রক্রিয়া এবং তাদের মানগুলিও প্রিন্ট করতে পারে।

সমস্যাটি বোঝার জন্য একটি উদাহরণ নেওয়া যাক,

ইনপুট

N = 6

C++ এ বাইনারি ট্রির পোস্টঅর্ডার ট্রাভার্সালে n-ম নোড খুঁজুন

আউটপুট

3

ব্যাখ্যা

গাছের পোস্ট অর্ডার ট্রাভার্সাল − 4, 5, 2, 6, 7, 3, 1

সমাধান পদ্ধতি

ধারণাটি হল বাইনারি ট্রির পোস্ট অর্ডার ট্রাভার্সাল ব্যবহার করা যা রিকার্সিভ কল ব্যবহার করে করা হয়। প্রতিটি কলে আমরা বাম সাবট্রিফার্স্টের জন্য postOrder() কল করব এবং তারপরে postOrder() কল করব এবং শেষে রুট নোডটি পরিদর্শন করব। এই ট্রাভার্সাল চলাকালীন, আমরা নোডের সংখ্যা গণনা করব এবং নোডটি প্রিন্ট করব যার সংখ্যা N।

আমাদের সমাধানের কাজ চিত্রিত করার জন্য প্রোগ্রাম,

উদাহরণ

#include <iostream>
using namespace std;
bool isAPrimeNumber(int n) {
   if (n <= 1) return false;
   if (n <= 3) return true;
   if (n%2 == 0 || n%3 == 0) return false;
   for (int i=5; i*i<=n; i=i+6)
      if (n%i == 0 || n%(i+2) == 0)
         return false;
   return true;
}
long int calcPrimeProduct(long int n) {
   long int p = 2;
   n--;
   for (int i = 3; n != 0; i++) {
      if (isAPrimeNumber(i)) {
         p = p * i;
         n--;
      }
      i++;
   }
   return p;
}
long int findNextPrime(long int n) {
   long int nextPrime = n + 2;
   while (true) {
      if (isAPrimeNumber(nextPrime))
         break;
      nextPrime++;
   }
   return nextPrime;
}
int main() {
   long long int N = 5;
   long long int primeProduct = calcPrimeProduct(N);
   int fortunateNumber = findNextPrime(primeProduct) - primeProduct;
   cout<<N<<"th fortunate number is "<<fortunateNumber;
   return 0;
}

আউটপুট

5th fortunate number is 23

  1. C++ এ বাইনারি ট্রিতে রুট থেকে প্রদত্ত নোডের দূরত্ব খুঁজুন

  2. C++ এ একটি বাইনারি ট্রির উল্লম্ব ক্রমে ট্রাভার্সালে kth নোড খুঁজুন

  3. C++ এ বাইনারি ট্রিতে সর্বোচ্চ উল্লম্ব যোগফল খুঁজুন

  4. একটি প্রদত্ত বাইনারি গাছের পোস্টঅর্ডার রিকার্সিভ ট্রাভার্সাল করার জন্য C++ প্রোগ্রাম