इस ट्यूटोरियल में, हम टर्नरी एक्सप्रेशन को बाइनरी ट्री में बदलने के प्रोग्राम पर चर्चा करेंगे।
इसके लिए हमें एक टर्नरी एक्सप्रेशन दिया जाएगा। हमारा कार्य दिए गए एक्सप्रेशन को बाइनरी ट्री के रूप में बदलना है जो विभिन्न पाथ (विकल्पों) पर निर्भर करता है।
उदाहरण
#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