#include <iostream>
using namespace std;
struct tNode {
char data;
struct tNode *left;
struct tNode *right;
};
// Function to create a new node
tNode *newNode(char data) {
tNode *node = new tNode;
node->data = data;
node->left = NULL;
node->right = NULL;
return node;
}
// Function to insert nodes in level order
tNode *insertLevelOrder(char arr[], tNode *root, int i, int n) {
// Base case for recursion
if (i < n) {
tNode *temp = newNode(arr[i]);
root = temp;
// insert left child
root->left = insertLevelOrder(arr, root->left, 2 * i + 1, n);
// insert right child
root->right = insertLevelOrder(arr, root->right, 2 * i + 2, n);
}
return root;
}
// Function to delete the given tree
void deleteTree(tNode *node) {
if (node == NULL)
return;
/* first delete both subtrees */
deleteTree(node->left);
deleteTree(node->right);
/* then delete the node */
// std::cout << "Deleting node: " << node->data << std::endl;
delete node;
}
void post_order(tNode *node) {
if (node == nullptr) return;
post_order(node->left);
post_order(node->right);
cout<<node->data;
}
// Driver program to test above function
int main() {
int size = 31;
char arr[size]={'+','*', '2', '+', '6', '-', '-', '+', '5', '-', '-', '-', '-', '-', '-', '-', '2', '5', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-'} ; // Create an array of elements
tNode *root = nullptr;
root = insertLevelOrder(arr, root, 0, size);
post_order(root);
cout << endl;
deleteTree(root);
root = NULL;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKc3RydWN0IHROb2RlIHsKICBjaGFyIGRhdGE7CiAgc3RydWN0IHROb2RlICpsZWZ0OwogIHN0cnVjdCB0Tm9kZSAqcmlnaHQ7Cn07CgovLyBGdW5jdGlvbiB0byBjcmVhdGUgYSBuZXcgbm9kZQp0Tm9kZSAqbmV3Tm9kZShjaGFyIGRhdGEpIHsKICB0Tm9kZSAqbm9kZSA9IG5ldyB0Tm9kZTsKICBub2RlLT5kYXRhID0gZGF0YTsKICBub2RlLT5sZWZ0ID0gTlVMTDsKICBub2RlLT5yaWdodCA9IE5VTEw7CiAgcmV0dXJuIG5vZGU7Cn0KCi8vIEZ1bmN0aW9uIHRvIGluc2VydCBub2RlcyBpbiBsZXZlbCBvcmRlcgp0Tm9kZSAqaW5zZXJ0TGV2ZWxPcmRlcihjaGFyIGFycltdLCB0Tm9kZSAqcm9vdCwgaW50IGksIGludCBuKSB7CiAgLy8gQmFzZSBjYXNlIGZvciByZWN1cnNpb24KICBpZiAoaSA8IG4pIHsKICAgIHROb2RlICp0ZW1wID0gbmV3Tm9kZShhcnJbaV0pOwogICAgcm9vdCA9IHRlbXA7CgogICAgLy8gaW5zZXJ0IGxlZnQgY2hpbGQKICAgIHJvb3QtPmxlZnQgPSBpbnNlcnRMZXZlbE9yZGVyKGFyciwgcm9vdC0+bGVmdCwgMiAqIGkgKyAxLCBuKTsKCiAgICAvLyBpbnNlcnQgcmlnaHQgY2hpbGQKICAgIHJvb3QtPnJpZ2h0ID0gaW5zZXJ0TGV2ZWxPcmRlcihhcnIsIHJvb3QtPnJpZ2h0LCAyICogaSArIDIsIG4pOwogIH0KICByZXR1cm4gcm9vdDsKfQoKLy8gRnVuY3Rpb24gdG8gZGVsZXRlIHRoZSBnaXZlbiB0cmVlCnZvaWQgZGVsZXRlVHJlZSh0Tm9kZSAqbm9kZSkgewogIGlmIChub2RlID09IE5VTEwpCiAgICByZXR1cm47CgogIC8qIGZpcnN0IGRlbGV0ZSBib3RoIHN1YnRyZWVzICovCiAgZGVsZXRlVHJlZShub2RlLT5sZWZ0KTsKICBkZWxldGVUcmVlKG5vZGUtPnJpZ2h0KTsKCiAgLyogdGhlbiBkZWxldGUgdGhlIG5vZGUgKi8KICAvLyBzdGQ6OmNvdXQgPDwgIkRlbGV0aW5nIG5vZGU6ICIgPDwgbm9kZS0+ZGF0YSA8PCBzdGQ6OmVuZGw7CiAgZGVsZXRlIG5vZGU7Cn0Kdm9pZCBwb3N0X29yZGVyKHROb2RlICpub2RlKSB7CiAgICBpZiAobm9kZSA9PSBudWxscHRyKSByZXR1cm47CiAgICBwb3N0X29yZGVyKG5vZGUtPmxlZnQpOwogICAgcG9zdF9vcmRlcihub2RlLT5yaWdodCk7CiAgICBjb3V0PDxub2RlLT5kYXRhOwp9CgovLyBEcml2ZXIgcHJvZ3JhbSB0byB0ZXN0IGFib3ZlIGZ1bmN0aW9uCmludCBtYWluKCkgewogIGludCBzaXplID0gMzE7CiAgY2hhciBhcnJbc2l6ZV09eycrJywnKicsICcyJywgJysnLCAnNicsICctJywgJy0nLCAnKycsICc1JywgJy0nLCAnLScsICctJywgJy0nLCAnLScsICctJywgJy0nLCAnMicsICc1JywgJy0nLCAnLScsICctJywgJy0nLCAnLScsICctJywgJy0nLCAnLScsICctJywgJy0nLCAnLScsICctJywgJy0nLCAnLScsICctJ30gOyAvLyBDcmVhdGUgYW4gYXJyYXkgb2YgZWxlbWVudHMKICB0Tm9kZSAqcm9vdCA9IG51bGxwdHI7CiAgcm9vdCA9IGluc2VydExldmVsT3JkZXIoYXJyLCByb290LCAwLCBzaXplKTsKIHBvc3Rfb3JkZXIocm9vdCk7CiAgY291dCA8PCBlbmRsOwogIAogIGRlbGV0ZVRyZWUocm9vdCk7CiAgcm9vdCA9IE5VTEw7CgoKICByZXR1cm4gMDsKfQo=