কম্পিউটার টিউটোরিয়াল

C++-এ দেওয়া অ্যারে n লেভেলের BST প্রতিনিধিত্ব করতে পারে কিনা তা যাচাই করা


আমাদের একটি অ্যারে A আছে, আমাদের যাচাই করতে হবে অ্যারেটি n লেভেলের একটি BST কিনা তা প্রতিনিধিত্ব করতে পারে কিনা। যেহেতু লেভেল n, আমরা নিচের মত করে ট্রি কনস্ট্রাক্ট করতে পারি। ধরা যাক একটি সংখ্যা k, k-এর চেয়ে বড় মান ডান পাশে যাবে, এবং ছোট মান বাম পাশে। ধরুন দুটি লিস্ট আছে: {50, 20, 9, 25, 10}, এবং {50, 30, 20, 25, 10}

C++-এ দেওয়া অ্যারে n লেভেলের BST প্রতিনিধিত্ব করতে পারে কিনা তা যাচাই করা

প্রথমটি বৈধ নয়, কিন্তু দ্বিতীয়টি বৈধ।

এটি যাচাই করার দুটি পদ্ধতি আছে: BST তৈরি করে হাইট চেক করা, অথবা অ্যারে-ভিত্তিক পদ্ধতি। অ্যারে-ভিত্তিক পদ্ধতিটি নিচে:

  • দুটি ভেরিয়েবল নিন: max = infinity (বাম সাবট্রির সর্বোচ্চ সীমা চিহ্নিত করতে), এবং min = negative infinity (ডান সাবট্রির ন্যূনতম সীমা চিহ্নিত করতে)।
  • প্রতিটি উপাদান arr[i] থেকে arr[n-1] পর্যন্ত নিচের ধাপগুলো করুন:
    • যদি arr[i] > arr[i-1] এবং arr[i] > min এবং arr[i] < max, তবে min := arr[i-1] আপডেট করুন।
    • অন্যথায় যদি arr[i] > min এবং arr[i] < max, তবে max := arr[i] আপডেট করুন।
    • যদি 上記 দুটি শর্তই বৈধ না হয়, তবে উপাদানটি নতুন লেভেলে ইনসার্ট হবে, তাই ব্রেক করুন।

উদাহরণ

#include <iostream> using namespace std; bool canMakeBSTifHeightN(int arr[], int n) {    int min = INT_MIN;    int max = INT_MAX;    for(int i = 1; i < n; i++){       if (arr[i] > arr[i - 1] && arr[i] > min && arr[i] < max) {          min = arr[i - 1];       } else if (arr[i] < arr[i - 1] && arr[i] > min && arr[i] <       max) {          max = arr[i - 1];       } else {          return true;       }    }    return false; } int main() {    int elements[] = {50, 30, 20, 25, 10};    int n = sizeof(elements)/sizeof(elements[0]);    if (canMakeBSTifHeightN(elements, n))       cout << "We can make BST of height " << n;    else       cout << "We can not make BST of height " << n; }

আউটপুট

We can make BST of height 5

  1. সি++ STL ব্যবহার করে অ্যারে প্যালিনড্রোম কিনা তা যাচাই করার প্রোগ্রাম

  2. C++-এ একটি অ্যারে বাইনারি সার্চ ট্রির প্রি-অর্ডার ট্রাভার্সাল রিপ্রেজেন্ট করে কিনা চেক করা

  3. C++-এ একটি ট্রি গ্রাফ লিনিয়ার কিনা তা যাচাই করা

  4. C++-এ দেওয়া অ্যারে n লেভেলের BST প্রতিনিধিত্ব করতে পারে কিনা তা যাচাই করা