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

C প্রোগ্রামে বাইনারি ট্রির বামপাশ ও ডানপাশের নোড প্রিন্ট করা


ভূমিকা

একটি বাইনারি ট্রি দেওয়া থাকলে, প্রতিটি লেভেলের বামপাশের (leftmost) এবং ডানপাশের (rightmost) নোডগুলো প্রিন্ট করতে হবে। এগুলোকে কর্ণার (corner) নোডও বলা হয়।

উদাহরণ

ইনপুট ট্রি:
       106
     /    \
   20      320
  /  \    /  \
100  21  61   52

আউটপুট: 106 20 320 100 52

এলগরিদম (লেভেল অর্ডার ট্রাভার্সাল)

void print(node* root)
শুরু
  যদি root == NULL: রিটার্ন
  queue que, vector ans
  que.push(root)
  যতক্ষণ que খালি নয়:
    n = que.size()
    i = 0 থেকে n-1 পর্যন্ত:
      temp = que.front(), que.pop()
      যদি i == 0 বা i == n-1: ans.push_back(temp->data)
      যদি temp->left: que.push(temp->left)
      যদি temp->right: que.push(temp->right)
  ans ভেক্টরের সব উপাদান প্রিন্ট করুন
শেষ

C++ প্রোগ্রাম উদাহরণ

#include 
using namespace std;

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

struct node* newNode(int val) {
    node* temp = new node;
    temp->data = val;
    temp->left = temp->right = NULL;
    return temp;
}

void print(node* root) {
    if (root == NULL) return;
    queue que;
    que.push(root);
    vector ans;
    while (!que.empty()) {
        int n = que.size();
        for (int i = 0; i < n; i++) {
            node* temp = que.front(); que.pop();
            if (i == 0 || i == n - 1)
                ans.push_back(temp->data);
            if (temp->left) que.push(temp->left);
            if (temp->right) que.push(temp->right);
        }
    }
    for (auto i : ans) cout << i << " ";
}

int main() {
    node* root = newNode(106);
    root->left = newNode(20);
    root->right = newNode(320);
    root->left->left = newNode(100);
    root->left->right = newNode(21);
    root->right->left = newNode(61);
    root->right->right = newNode(52);
    print(root);
    return 0;
}

আউটপুট

106 20 320 100 52
  1. C++-এ বাইনারি সার্চ ট্রির সব বিজোড় নোড প্রিন্ট করা

  2. সি++ প্রোগ্রাম: বাইনারি ট্রি (Binary Tree)-এর বিজোড় লেভেল (Odd Level)-এ থাকা নোডগুলো প্রিন্ট করা

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

  4. পাইথনে বাইনারি ট্রির লিফ এবং নন-লিফ নোড খুঁজে বের করার প্রোগ্রাম