কম্পিউটার

C++-এ BST-এর প্রি-অর্ডার ট্রাভার্সাল ব্যবহার করে রুটের থেকে ছোট উপাদানের সংখ্যা


আপনাকে প্রি-অর্ডার ট্রাভার্সালের ফলাফল দেওয়া হয়েছে। আপনাকে মূলের থেকে ছোট উপাদানের সংখ্যা খুঁজে বের করতে হবে।

প্রি-অর্ডার ট্রাভার্সালের প্রথম উপাদানটি হল BST-এর মূল। আসুন একটি উদাহরণ দেখি।

ইনপুট

preorder_result = [5, 4, 2, 1, 7, 6, 8, 9]

আউটপুট

3

মূলের চেয়ে কম তিনটি উপাদান আছে। মূল হল 5।

অ্যালগরিদম

  • একটি অ্যারেতে প্রি-অর্ডার ফলাফল শুরু করুন।

  • একটি ভেরিয়েবলের মধ্যে প্রথম উপাদান অর্থাৎ BST-এর রুট সংরক্ষণ করুন।

  • একটি লুপ লিখুন যা প্রি-অর্ডার ফলাফলের 2য় উপাদান থেকে পুনরাবৃত্তি হয়।

    • রুটের সাথে প্রতিটি উপাদানের তুলনা করুন।

    • যদি বর্তমান উপাদান রুট থেকে বড় হয়, তাহলে গণনা বৃদ্ধি করুন।

  • গণনা ফেরত দিন।

বাস্তবায়ন

C++

-এ উপরের অ্যালগরিদমের বাস্তবায়ন নিচে দেওয়া হল
#include <bits/stdc++.h>
using namespace std;
int getElementsCount(int arr[], int n) {
   if (n < 0) {
      return 0;
   }
   int i, root = arr[0], count = 0;
   for(i = 1; i < n; i++) {
      if(arr[i] < root) {
         count += 1;
      }
   }
   return count;
}
int main() {
   int preorder[] = {5, 4, 2, 1, 7, 6, 8, 9};
   int n = 8;
   cout << getElementsCount(preorder, n) << endl;
   return 0;
}

আউটপুট

আপনি যদি উপরের কোডটি চালান, তাহলে আপনি নিম্নলিখিত ফলাফল পাবেন।

3

  1. প্রদত্ত প্রি-অর্ডার ট্রাভার্সাল থেকে BST তৈরি করুন - C++ এ 1 সেট করুন

  2. C++ এ ধারাবাহিক উপাদানগুলির XOR ব্যবহার করে অ্যারের উপাদানগুলি খুঁজুন

  3. C++ ব্যবহার করে অ্যারের সমস্ত উপাদান মুছে ফেলার জন্য ন্যূনতম সংখ্যক অপারেশন প্রয়োজন।

  4. C++ ব্যবহার করে একটি অ্যারের মধ্যে একটি সংখ্যার ফ্রিকোয়েন্সি খুঁজুন।