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

C++-এ বাইনারি ট্রির প্রতিটি লেভেল সর্টেড অর্ডারে প্রিন্ট করুন

একটি বাইনারি ট্রি দেওয়া আছে। প্রতিটি লেভেলের নোডগুলো তাদের ভ্যালু অনুযায়ী সর্টেড অর্ডারে প্রিন্ট করতে হবে।

উদাহরণ ট্রি:

C++-এ বাইনারি ট্রির প্রতিটি লেভেল সর্টেড অর্ডারে প্রিন্ট করুন

আউটপুট: 20 6 15 2 17 32 78 (প্রতি লেভেল সর্টেড)।

কিউ + দুটি প্রায়োরিটি কিউ
  • লেভেল অর্ডার ট্রাভার্সালের জন্য কিউ।
  • কারেন্ট লেভেল ও নেক্সট লেভেলের নোড ভ্যালু সর্টেড রাখতে দুটি মিন-হিপ (priority_queue with greater)।
  • NULL সেপারেটর দিয়ে লেভেল পৃথক করুন।
উদাহরণ কোড
#include <iostream>
#include <queue>
#include <vector>
using namespace std;

struct Node {
    int data;
    struct Node *left, *right;
};

void printLevelElements(Node* root) {
    if (root == NULL) return;
    queue<Node*> q;
    priority_queue<int, vector<int>, greater<int> > current_level;
    priority_queue<int, vector<int>, greater<int> > next_level;
    q.push(root);
    q.push(NULL);
    current_level.push(root->data);
    while (!q.empty()) {
        int data = current_level.top();
        Node* node = q.front();
        if (node == NULL) {
            q.pop();
            if (q.empty()) break;
            q.push(NULL);
            cout << "\n";
            current_level.swap(next_level);
            continue;
        }
        cout << data << " ";
        q.pop();
        current_level.pop();
        if (node->left != NULL) {
            q.push(node->left);
            next_level.push(node->left->data);
        }
        if (node->right != NULL) {
            q.push(node->right);
            next_level.push(node->right->data);
        }
    }
}

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

int main() {
    Node* root = insertNode(12);
    root->left = insertNode(98);
    root->right = insertNode(34);
    root->left->left = insertNode(76);
    root->left->right = insertNode(5);
    root->right->left = insertNode(12);
    root->right->right = insertNode(45);
    cout << "Elements at each Level of binary tree are \n";
    printLevelElements(root);
    return 0;
}
আউটপুট
Elements at each Level of binary tree are
12
34 98
5 12 45 76
  1. C++-এ বাইনারি ট্রিতে K লিফ বিশিষ্ট সব নোড প্রিন্ট করা

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

  3. C++ প্রোগ্রামিং-এ বাইনারি ট্রিতে যেকোনো দুটি নোডের পথ প্রিন্ট করা

  4. C++ প্রোগ্রামিং-এ বাইনারি ট্রির সব নোডের লেভেল প্রিন্ট করা