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

C++-এ বাইনারি ট্রির একদম ভERTICAL লেভেল সর্টেড কিনা যাচাই


কনসেপ্ট

একটি বাইনারি ট্রি দেওয়া আছে। নির্দিষ্ট ভERTICAL লেভেলটি সর্টেড (ক্রমবদ্ধ) কিনা যাচাই করুন। (দুটি নোড ওভারল্যাপ হলে ওই লেভেলে সিকোয়েন্স সর্টেড কিনা দেখুন।)

ইনপুট ১

ট্রি: 2 / \ 3 6 / \ 8 5 / 7, Level l = -1

আউটপুট ১

Yes

লেভেল -1-এ নোড: 3 -> 7 (সর্টেড)।

ইনপুট ২

ট্রি: 2 / \ 3 7 \ / 4 5, Level l = 0

আউটপুট ২

Yes

লেভেল 0-এ নোড: 2 -> 4 -> 5 (সর্টেড, 4 ও 5 ওভারল্যাপ)।

পদ্ধতি

দক্ষ সমাধান: ভERTICAL লেভেল অর্ডার ট্রাভার্সাল (BFS কিউ দিয়ে) করুন। লেভেল l-এ পাওয়া নোডগুলোর মান পূর্ববর্তী মানের চেয়ে বড় বা সমান কিনা চেক করুন। ছোট হলে false, শেষ পর্যন্ত চলে গেলে true।

উদাহরণ (C++ কোড)

// CPP: বাইনারি ট্রির ভERTICAL লেভেল সর্টেড কিনা
#include <bits/stdc++.h>
using namespace std;

struct Node1 { int key1; Node1 *left1, *right1; };
Node1* newNode(int key1) { Node1* t=new Node1; t->key1=key1; t->left1=t->right1=NULL; return t; }

bool isSorted1(Node1* root1, int level1) {
    if (root1 == NULL) return true;
    int prevVal1 = INT_MIN, currLevel1;
    Node1* currNode1;
    queue> q1;
    q1.push({root1,0});
    while(!q1.empty()) {
        currNode1 = q1.front().first;
        currLevel1 = q1.front().second;
        q1.pop();
        if (currLevel1 == level1) {
            if (prevVal1 <= currNode1->key1) prevVal1 = currNode1->key1;
            else return false;
        }
        if (currNode1->left1) q1.push({currNode1->left1, currLevel1-1});
        if (currNode1->right1) q1.push({currNode1->right1, currLevel1+1});
    }
    return true;
}

int main() {
    Node1* root1 = newNode(2);
    root1->left1=newNode(3); root1->right1=newNode(6);
    root1->left1->left1=newNode(8); root1->left1->right1=newNode(5);
    root1->left1->right1->left1=newNode(7);
    int level1 = -1;
    cout << (isSorted1(root1,level1)?"Yes":"No");
    return 0;
}

আউটপুট

Yes
  1. C++-এ একটি বাইনারি ট্রি লেভেলওয়াইজ সর্টেড কিনা চেক করা

  2. C++-এ একটি বাইনারি ট্রি SumTree কিনা তা যাচাই করা

  3. C++-এ একটি বাইনারি ট্রি লেভেল-ওয়াইজ সর্টেড কিনা তা যাচাই করা

  4. পাইথনে বাইনারি ট্রির দিয়ে गये ভার্টিকাল লেভেল সর্টেড কিনা চেক করা