fork(1) download
  1. #include <iostream>
  2. using namespace std;
  3.  
  4. struct tNode {
  5. char data;
  6. struct tNode *left;
  7. struct tNode *right;
  8. };
  9.  
  10. // Function to create a new node
  11. tNode *newNode(char data) {
  12. tNode *node = new tNode;
  13. node->data = data;
  14. node->left = NULL;
  15. node->right = NULL;
  16. return node;
  17. }
  18.  
  19. // Function to insert nodes in level order
  20. tNode *insertLevelOrder(char arr[], tNode *root, int i, int n) {
  21. // Base case for recursion
  22. if (i < n) {
  23. tNode *temp = newNode(arr[i]);
  24. root = temp;
  25.  
  26. // insert left child
  27. root->left = insertLevelOrder(arr, root->left, 2 * i + 1, n);
  28.  
  29. // insert right child
  30. root->right = insertLevelOrder(arr, root->right, 2 * i + 2, n);
  31. }
  32. return root;
  33. }
  34.  
  35. // Function to delete the given tree
  36. void deleteTree(tNode *node) {
  37. if (node == NULL)
  38. return;
  39.  
  40. /* first delete both subtrees */
  41. deleteTree(node->left);
  42. deleteTree(node->right);
  43.  
  44. /* then delete the node */
  45. // std::cout << "Deleting node: " << node->data << std::endl;
  46. delete node;
  47. }
  48. void post_order(tNode *node) {
  49. if (node == nullptr) return;
  50. post_order(node->left);
  51. post_order(node->right);
  52. cout<<node->data;
  53. }
  54.  
  55. // Driver program to test above function
  56. int main() {
  57. int size = 31;
  58. char arr[size]={'+','*', '2', '+', '6', '-', '-', '+', '5', '-', '-', '-', '-', '-', '-', '-', '2', '5', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-'} ; // Create an array of elements
  59. tNode *root = nullptr;
  60. root = insertLevelOrder(arr, root, 0, size);
  61. post_order(root);
  62. cout << endl;
  63.  
  64. deleteTree(root);
  65. root = NULL;
  66.  
  67.  
  68. return 0;
  69. }
  70.  
Success #stdin #stdout 0.01s 5320KB
stdin
Standard input is empty
stdout
-2+5-5+------6*--------------2+