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