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

C++-এ Binary Search Tree-এ নোড ইনসার্ট করা

এই সমস্যায় একটি বাইনারি সার্চ ট্রি (BST) দেওয়া থাকলে, একটি নতুন নোড ইনসার্ট করতে হবে যাতে BST প্রপার্টি বজায় থাকে (বাম সাবট্রি < রুট < ডান সাবট্রি)।

সমাধানের পদ্ধতি (Recursive)

  • যদি রুট NULL হয়, নতুন নোড তৈরি করে রিটার্ন করুন।
  • যদি val < root->val, বাম সাবট্রিতে রিকার্শিভলি ইনসার্ট করুন।
  • অন্যথায় ডান সাবট্রিতে রিকার্শিভলি ইনসার্ট করুন।
  • রুট রিটার্ন করুন।

উদাহরণ (C++)

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

struct TreeNode {
    int val;
    TreeNode *left, *right;
    TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
};

class Solution {
public:
    TreeNode* insertIntoBST(TreeNode* root, int val) {
        if (!root) return new TreeNode(val);
        if (root->val > val)
            root->left = insertIntoBST(root->left, val);
        else
            root->right = insertIntoBST(root->right, val);
        return root;
    }
};

// Helper: Level order traversal for printing
void printLevelOrder(TreeNode* root) {
    if (!root) return;
    queue<TreeNode*> q;
    q.push(root);
    cout << "[";
    while (!q.empty()) {
        TreeNode* curr = q.front(); q.pop();
        if (curr) {
            cout << curr->val;
            q.push(curr->left);
            q.push(curr->right);
            if (!q.empty()) cout << ", ";
        } else {
            cout << "null";
            if (!q.empty()) cout << ", ";
        }
    }
    cout << "]" << endl;
}

int main() {
    // Building tree: [4,2,7,1,3]
    TreeNode* root = new TreeNode(4);
    root->left = new TreeNode(2);
    root->right = new TreeNode(7);
    root->left->left = new TreeNode(1);
    root->left->right = new TreeNode(3);

    Solution ob;
    TreeNode* newRoot = ob.insertIntoBST(root, 5);
    printLevelOrder(newRoot); // Expected: [4,2,7,1,3,5] (level order)
    return 0;
}

ইনপুট

[4,2,7,1,3] 5

আউটপুট (Level Order)

[4, 2, 7, 1, 3, 5]

নোট: মূল কোডে লেভেল অর্ডার ট্রাভার্সালের জন্য কিউ এবং নাল মার্কার ব্যবহার করা হয়েছিল, যা কিছুটা জটিল। উপরে সহজ সংস্করণ দেওয়া হয়েছে।

  1. বাইনারি ট্রি প্রুনিং C++-এ

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

  3. C++-এ বাইনারি ট্রি থেকে বাইনারি সার্চ ট্রি (BST) কনভার্ট করুন

  4. বাইনারি সার্চ C++ প্রোগ্রামে