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