ধরুন আমাদের সংখ্যার একটি ক্রম আছে; এটি একটি বাইনারি অনুসন্ধান গাছের সঠিক প্রিঅর্ডার ট্রাভার্সাল সিকোয়েন্স কিনা তা আমাদের পরীক্ষা করতে হবে। আমরা অনুমান করতে পারি যে অনুক্রমের প্রতিটি সংখ্যা অনন্য। নিচের বাইনারি সার্চ ট্রি -
টি বিবেচনা করুন
সুতরাং, যদি ইনপুটটি [5,2,1,3,6] এর মত হয়, তাহলে আউটপুটটি সত্য হবে
এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -
-
itr :=-1
-
কম :=-অসীম
-
আরম্ভ করার জন্য i :=0, যখন i <প্রি-অর্ডারের আকার, আপডেট (i 1 দ্বারা বাড়ান), করবেন −
-
x :=প্রি-অর্ডার[i]
-
যদি x <কম হয়, তাহলে −
-
মিথ্যা ফেরত দিন
-
-
যখন (itr>=0 এবং preorder[itr]
করুন -
কম :=প্রি-অর্ডার[itr]
-
(1 দ্বারা এটির হ্রাস করুন)
-
-
(1 দ্বারা itr বাড়ান)
-
প্রি-অর্ডার[itr] :=x
-
-
প্রত্যাবর্তন সত্য
উদাহরণ
আরো ভালোভাবে বোঝার জন্য নিচের বাস্তবায়নটি দেখি -
#include <bits/stdc++.h> using namespace std; class Solution { public: bool verifyPreorder(vector<int<& preorder) { int itr = -1; int low = INT_MIN; for (int i = 0; i < preorder.size(); i++) { int x = preorder[i]; if (x < low) return false; while (itr >= 0 && preorder[itr] < x) { low = preorder[itr]; itr--; } itr++; preorder[itr] = x; } return true; } }; main(){ Solution ob; vector<int< v = {5,2,1,3,6}; cout << (ob.verifyPreorder(v)); }
ইনপুট
{5,2,1,3,6}
আউটপুট
1