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

সি++-এ n-ary ট্রিতে পরবর্তী বড় উপাদান বের করা

একটি n-ary ট্রি (প্রতিটি নোডে n সংখ্যক চাইল্ড হতে পারে) এবং একটি সংখ্যা x দেওয়া থাকলে, ট্রিতে x চেয়ে বড় সবচেয়ে ছোট উপাদান বের করতে হবে।

অ্যালগরিদম

  • n-ary ট্রি তৈরি করুন।
  • রিকার্সিভ ফাংশন লিখুন যা প্রতিটি নোড ভিজিট করবে।
  • যদি নোডের ভ্যালু x চেয়ে বড় হয় এবং (রেজাল্ট খালি হয় অথবা নোডের ভ্যালু রেজাল্ট চেয়ে ছোট), তবে রেজাল্ট আপডেট করুন।
  • সকল চাইল্ডের জন্য রিকার্সিভ কল দিন।

সি++ ইমপ্লিমেন্টেশন

#include <bits/stdc++.h>
using namespace std;

struct Node {
    int data;
    vector child;
};

Node* newNode(int data) {
    Node* node = new Node;
    node->data = data;
    return node;
}

void findNextGreaterElement(Node* root, int x, Node** result) {
    if (!root) return;
    if (root->data > x) {
        if (!*result || (*result)->data > root->data) *result = root;
    }
    for (Node* child : root->child) {
        findNextGreaterElement(child, x, result);
    }
}

int main() {
    Node* root = newNode(10);
    root->child.push_back(newNode(12));
    root->child.push_back(newNode(23));
    root->child.push_back(newNode(45));
    root->child[0]->child.push_back(newNode(40));
    root->child[1]->child.push_back(newNode(33));
    root->child[2]->child.push_back(newNode(12));
    Node* result = nullptr;
    findNextGreaterElement(root, 20, &result);
    cout << result->data << endl; // 23
    return 0;
}

আউটপুট

23
  1. C++-এ N-ary ট্রি প্রি-অর্ডার ট্রভার্সাল (N-ary Tree Preorder Traversal)

  2. N-ary ট্রি লেভেল অর্ডার ট্রাভার্সাল C++-এ

  3. C++-এ বাইনারি সার্চ ট্রি ইটারেটর (Binary Search Tree Iterator)

  4. C++-এ রিকার্শন ছাড়া N-এরি ট্রির প্রিঅর্ডার ট্রাভার্সাল (Preorder Traversal of N-ary Tree Without Recursion)