এই টিউটোরিয়ালে আমরা টার্নারি এক্সপ্রেশনকে বাইনারি ট্রিতে কনভার্ট করার প্রোগ্রাম নিয়ে আলোচনা করব।
এখানে আমাদের একটি টার্নারি এক্সপ্রেশন দেওয়া থাকবে। আমাদের কাজ দিয়ে गये এক্সপ্রেশনকে বাইনারি ট্রির আকারে কনভার্ট করা য 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