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

C++-এ টার্নারি এক্সপ্রেশনকে বাইনারি ট্রিতে কনভার্ট করা

এই টিউটোরিয়ালে আমরা টার্নারি এক্সপ্রেশনকে বাইনারি ট্রিতে কনভার্ট করার প্রোগ্রাম নিয়ে আলোচনা করব।

এখানে আমাদের একটি টার্নারি এক্সপ্রেশন দেওয়া থাকবে। আমাদের কাজ দিয়ে गये এক্সপ্রেশনকে বাইনারি ট্রির আকারে কনভার্ট করা য fama সম্ভাব্য পথ (পছন্দ) গুলোর উপর ভিত্তি করে।

বাস্তবায়ন

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

// ট্রির নোড স্ট্রাকচার
struct Node { 
    char data; 
    Node *left, *right; 
}; 

// নতুন নোড তৈরি
Node *newNode(char Data) { 
    Node *new_node = new Node; 
    new_node->data = Data; 
    new_node->left = new_node->right = NULL; 
    return new_node; 
} 

// টার্নারি এক্সপ্রেশনকে বাইনারি ট্রিতে কনভার্ট করা
Node *convertExpression(string str, int & i) { 
    // বর্তমান ক্যারেক্টার সংরক্ষণ
    Node *root = newNode(str[i]); 
    // যদি শেষ ক্যারেক্টার হয়, বেস কেস রিটার্ন
    if (i == str.length() - 1) 
        return root; 
    i++; 
    // যদি পরবর্তী ক্যারেক্টার '?' হয়,
    // তবে বর্তমান নোডের সাবট্রি থাকবে
    if (str[i] == '?') { 
        // '?' স্কিপ করা
        i++; 
        root->left = convertExpression(str, i); 
        // ':' ক্যারেক্টার স্কিপ করা
        i++; 
        root->right = convertExpression(str, i); 
        return root; 
    } else 
        return root; 
} 

// বাইনারি ট্রি প্রিন্ট করা
void display_tree(Node *root) { 
    if (!root) 
        return; 
    cout << root->data << " "; 
    display_tree(root->left); 
    display_tree(root->right); 
} 

int main() { 
    string expression = "a?b?c:d:e"; 
    int i = 0; 
    Node *root = convertExpression(expression, i); 
    display_tree(root); 
    return 0; 
}

আউটপুট

a b c d e
  1. বাইনারি ট্রিতে একটি নোডের পোস্টঅর্ডার সাক্সেসর (C++)

  2. C++-এ সোর্টেড লিস্টকে বাইনারি সার্চ ট্রি (BST) তে রূপান্তর

  3. C++-এ বাইনারি ট্রিতে প্রিঅর্ডার প্রিডিসেসর (Preorder Predecessor of a Node)

  4. C++-এ বাইনারি ট্রিতে প্রিঅর্ডার সাকসেসর (Preorder Successor of a Node)