#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 in_order(tNode* node) {
if (node == nullptr) return;
in_order(node->left);
cout<<node->data;
in_order(node->right);
}
// 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);
in_order(root);
cout << endl;
deleteTree(root);
root = NULL;
return 0;
}
CiNpbmNsdWRlIDxpb3N0cmVhbT4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCnN0cnVjdCB0Tm9kZSB7CiAgY2hhciBkYXRhOwogIHN0cnVjdCB0Tm9kZSAqbGVmdDsKICBzdHJ1Y3QgdE5vZGUgKnJpZ2h0Owp9OwoKLy8gRnVuY3Rpb24gdG8gY3JlYXRlIGEgbmV3IG5vZGUKdE5vZGUgKm5ld05vZGUoY2hhciBkYXRhKSB7CiAgdE5vZGUgKm5vZGUgPSBuZXcgdE5vZGU7CiAgbm9kZS0+ZGF0YSA9IGRhdGE7CiAgbm9kZS0+bGVmdCA9IE5VTEw7CiAgbm9kZS0+cmlnaHQgPSBOVUxMOwogIHJldHVybiBub2RlOwp9CgovLyBGdW5jdGlvbiB0byBpbnNlcnQgbm9kZXMgaW4gbGV2ZWwgb3JkZXIKdE5vZGUgKmluc2VydExldmVsT3JkZXIoY2hhciBhcnJbXSwgdE5vZGUgKnJvb3QsIGludCBpLCBpbnQgbikgewogIC8vIEJhc2UgY2FzZSBmb3IgcmVjdXJzaW9uCiAgaWYgKGkgPCBuKSB7CiAgICB0Tm9kZSAqdGVtcCA9IG5ld05vZGUoYXJyW2ldKTsKICAgIHJvb3QgPSB0ZW1wOwoKICAgIC8vIGluc2VydCBsZWZ0IGNoaWxkCiAgICByb290LT5sZWZ0ID0gaW5zZXJ0TGV2ZWxPcmRlcihhcnIsIHJvb3QtPmxlZnQsIDIgKiBpICsgMSwgbik7CgogICAgLy8gaW5zZXJ0IHJpZ2h0IGNoaWxkCiAgICByb290LT5yaWdodCA9IGluc2VydExldmVsT3JkZXIoYXJyLCByb290LT5yaWdodCwgMiAqIGkgKyAyLCBuKTsKICB9CiAgcmV0dXJuIHJvb3Q7Cn0KCi8vIEZ1bmN0aW9uIHRvIGRlbGV0ZSB0aGUgZ2l2ZW4gdHJlZQp2b2lkIGRlbGV0ZVRyZWUodE5vZGUgKm5vZGUpIHsKICBpZiAobm9kZSA9PSBOVUxMKQogICAgcmV0dXJuOwoKICAvKiBmaXJzdCBkZWxldGUgYm90aCBzdWJ0cmVlcyAqLwogIGRlbGV0ZVRyZWUobm9kZS0+bGVmdCk7CiAgZGVsZXRlVHJlZShub2RlLT5yaWdodCk7CgogIC8qIHRoZW4gZGVsZXRlIHRoZSBub2RlICovCiAgLy8gc3RkOjpjb3V0IDw8ICJEZWxldGluZyBub2RlOiAiIDw8IG5vZGUtPmRhdGEgPDwgc3RkOjplbmRsOwogIGRlbGV0ZSBub2RlOwp9CnZvaWQgaW5fb3JkZXIodE5vZGUqIG5vZGUpIHsKICAgIGlmIChub2RlID09IG51bGxwdHIpIHJldHVybjsKICAgIGluX29yZGVyKG5vZGUtPmxlZnQpOwoJY291dDw8bm9kZS0+ZGF0YTsKICAgIGluX29yZGVyKG5vZGUtPnJpZ2h0KTsKfQoKLy8gRHJpdmVyIHByb2dyYW0gdG8gdGVzdCBhYm92ZSBmdW5jdGlvbgppbnQgbWFpbigpIHsKICBpbnQgc2l6ZSA9IDMxOwogIGNoYXIgYXJyW3NpemVdPXsnKycsJyonLCAnMicsICcrJywgJzYnLCAnLScsICctJywgJysnLCAnNScsICctJywgJy0nLCAnLScsICctJywgJy0nLCAnLScsICctJywgJzInLCAnNScsICctJywgJy0nLCAnLScsICctJywgJy0nLCAnLScsICctJywgJy0nLCAnLScsICctJywgJy0nLCAnLScsICctJywgJy0nLCAnLSd9IDsgLy8gQ3JlYXRlIGFuIGFycmF5IG9mIGVsZW1lbnRzCiAgdE5vZGUgKnJvb3QgPSBudWxscHRyOwogIHJvb3QgPSBpbnNlcnRMZXZlbE9yZGVyKGFyciwgcm9vdCwgMCwgc2l6ZSk7CiAgaW5fb3JkZXIocm9vdCk7CiAgY291dCA8PCBlbmRsOwogIGRlbGV0ZVRyZWUocm9vdCk7CiAgcm9vdCA9IE5VTEw7CgoKICByZXR1cm4gMDsKfQo=