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

বাইনারি ট্রিতে সর্বোচ্চ লেভেল প্রোডাক্ট (C++)

একটি বাইনারি ট্রি দেওয়া আছে (পজিটিভ ও নেগেটিভ নোড সহ)। প্রতিটি লেভেলের নোড ভ্যালুর গুণফল বের করে সর্বোচ্চ গুণফল বের করুন। লেভেল অর্ডার ট্রাভার্সাল (BFS) ব্যবহার করুন।

উদাহরণ

#include <iostream>
#include <queue>
#include <algorithm>
using namespace std;

class Node {
public:
    int data;
    Node *left, *right;
};

Node* getNode(int data) {
    Node* n = new Node;
    n->data = data; n->left = n->right = NULL;
    return n;
}

int getMaxLevelProduct(Node* root) {
    if (!root) return 0;
    int res = root->data;
    queue q;
    q.push(root);
    while (!q.empty()) {
        int cnt = q.size();
        int prod = 1;
        while (cnt--) {
            Node* temp = q.front(); q.pop();
            prod *= temp->data;
            if (temp->left) q.push(temp->left);
            if (temp->right) q.push(temp->right);
        }
        res = max(res, prod);
    }
    return res;
}

int main() {
    Node* root = getNode(4);
    root->left = getNode(2); root->right = getNode(-5);
    root->left->left = getNode(-1); root->left->right = getNode(3);
    root->right->left = getNode(-2); root->right->right = getNode(6);
    cout << "Maximum level product is " << getMaxLevelProduct(root);
    return 0;
}

আউটপুট

Maximum level product is 36
  1. সর্বোচ্চ বাইনারি ট্রি নির্মাণ C++-এ

  2. C++-এ বাইনারি ট্রিতে সর্বোচ্চ স্পাইরাল যোগফল

  3. C++-এ বাইনারি ট্রিতে সর্বোচ্চ পথ যোগফল

  4. বাইনারি ট্রিতে ভার্টিকাল সমের সর্বোচ্চ মান খুঁজে বের করা C++-তে