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

মান x দিয়ে লিফ নোড ডিলিট করা C++ প্রোগ্রামে


এই টিউটোরিয়ালে আমরা শিখব কিভাবে একটি ট্রি থেকে দেওয়া মান দিয়ে লিফ নোড ডিলিট করা যায়।

সমস্যা সমাধানের ধাপগুলো:

  • বাইনারি ট্রির জন্য একটি struct Node লিখুন।

  • ট্রি ট্রাভার্স (ইনঅর্ডার, প্রিঅর্ডার, পোস্টঅর্ডার) করে সব ডেটা প্রিন্ট করার ফাংশন লিখুন।

  • struct দিয়ে নোড তৈরি করে ট্রি ইনিশিয়ালাইজ করুন।

  • x মান ইনিশিয়ালাইজ করুন।

  • দেওয়া মান দিয়ে লিফ নোড ডিলিট করার ফাংশন লিখুন। এতে দুটি আর্গুমেন্ট থাকে রুট নোড এবং x মান।

    • যদি রুট নাল হয় তবে রিটার্ন করুন।

    • রুটের লেফট নোডকে ডিলিশনের পর নতুন রুট দিয়ে রিপ্লেস করুন।

    • রুটের রাইট নোডও একইভাবে করুন।

    • যদি বর্তমান রুট নোডের ডেটা x-এর সমান হয় এবং সেটি লিফ নোড হয়, তবে নাল পয়েন্টার রিটার্ন করুন।

    • রুট নোড রিটার্ন করুন

উদাহরণ

নিচে কোডটি দেওয়া হলো:

#include <bits/stdc++.h> using namespace std; struct Node {    int data;    struct Node *left, *right; }; struct Node* newNode(int data) {    struct Node* newNode = new Node;    newNode->data = data;    newNode->left = newNode->right = NULL;    return newNode; } Node* deleteLeafNodes(Node* root, int x) {    if (root == NULL) {       return nullptr;    }    root->left = deleteLeafNodes(root->left, x);    root->right = deleteLeafNodes(root->right, x);    // checking the current node data with x    if (root->data == x && root->left == NULL && root->right == NULL) {       // deleting the node       return nullptr;    }    return root; } void inorder(Node* root) {    if (root == NULL) {       return;    }    inorder(root->left);    cout << root->data << " ";    inorder(root->right); } int main(void) {    struct Node* root = newNode(1);    root->left = newNode(2);    root->right = newNode(3);    root->left->left = newNode(3);    root->left->right = newNode(4);    root->right->right = newNode(5);    root->right->left = newNode(4);    root->right->right->left = newNode(4);    root->right->right->right = newNode(4);    deleteLeafNodes(root, 4);    cout << "Tree: ";    inorder(root);    cout << endl;    return 0; }

আউটপুট

উপরের কোডটি এক্সিকিউট করলে নিচের ফলাফল পাওয়া যাবে:

Tree: 3 2 1 3 5

উপসংহার

টিউটোরিয়াল সম্পর্কে কোনো প্রশ্ন থাকলে কমেন্ট সেকশনে জানান।


  1. C++-এ ট্রি নোড মুছে ফেলা

  2. BST-এ নোড ডিলিট C++-এ

  3. বাইনারি ট্রিতে রুট থেকে লিফ পথ এবং তাদের আপেক্ষিক অবস্থান প্রিন্ট করা C++-তে

  4. সি++ প্রোগ্রাম: রিকারশন ছাড়া রুট-টু-লিফ (Root-to-Leaf) সব পাথ প্রিন্ট করা