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

C++-এ n-ary ট্রি থেকে নির্দিষ্ট মান থেকে বড় নোড গণনা


একটি n-ary ট্রি এবং একটি সংখ্যা n দেওয়া আছে। ট্রিতে n থেকে বড় মানয়ুক্ত নোডের সংখ্যা বের করতে হবে।

উদাহরণ: tree=[[4],[1,2],[3,5]], n=2 হলে আউটপুট ৩।

অ্যালগরিদম

  • Node স্ট্রাক্ট: data, vector<Node*> child
  • getGreaterElementsCount(root, n):
    • যদি root==NULL, ০ রিটার্ন
    • count=০; যদি root->data > n হয় count++
    • প্রতিটি চাইল্ডের জন্য রিকার্সিভ কল করে count যোগ করুন
    • count রিটার্ন করুন

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

#include <bits/stdc++.h> using namespace std; struct Node {    int data;    vector<Node*> child; }; Node* getNewNode(int data) {    Node* temp = new Node;    temp->data = data;    return temp; } int getGreaterElementsCount(Node* root, int n) {    if (root == NULL) return 0;    int count = 0;    if (root->data > n) count++;    for (Node* child : root->child) count += getGreaterElementsCount(child, n);    return count; } int main() {    Node* root = getNewNode(1);    root->child.push_back(getNewNode(2));    root->child.push_back(getNewNode(3));    root->child.push_back(getNewNode(4));    root->child[0]->child.push_back(getNewNode(5));    root->child[0]->child.push_back(getNewNode(5));    root->child[1]->child.push_back(getNewNode(6));    root->child[1]->child.push_back(getNewNode(6));    root->child[1]->child.push_back(getNewNode(7));    root->child[2]->child.push_back(getNewNode(8));    root->child[2]->child.push_back(getNewNode(8));    root->child[2]->child.push_back(getNewNode(9));    int n = 2;    cout << getGreaterElementsCount(root, n) << endl;    return 0; }

আউটপুট

10

  1. C++ দিয়ে N-ary ট্রি ট্রাভার্স করার উপায়ের সংখ্যা বের করা

  2. C++-এ BST-এ দিয়ে যাওয়া রেঞ্জে (Range) পড়া নোডের সংখ্যা গণনা

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

  4. C++ ব্যবহার করে দেওয়া উচ্চতার AVL ট্রির ন্যূনতম নোড সংখ্যা