fork download
  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. int size,c=0;
  4. struct BstNode
  5. {
  6. int data;
  7. BstNode* left;
  8. BstNode* right;
  9. };
  10.  
  11.  
  12. BstNode* insert(BstNode* root,int data)
  13. {
  14. if(root==NULL)
  15. {
  16. root=new BstNode();
  17. root->data=data;
  18. root->left=root->right=NULL;
  19. }
  20. else if(data<root->data)
  21. {
  22. root->left=insert(root->left,data);
  23. }
  24. else
  25. {
  26. root->right=insert(root->right,data);
  27. }
  28. return root;
  29. }
  30. void preorderTraversal(BstNode* root)
  31. {
  32. if(root!=NULL)
  33. {
  34.  
  35. c++;
  36. if(c==size) cout<<root->data<<endl;
  37. else cout<<root->data<<" ";
  38. preorderTraversal(root->left);
  39. preorderTraversal(root->right);
  40. }
  41. }
  42. void inorderTraversal(BstNode* root)
  43. {
  44. if(root!=NULL)
  45. {
  46. inorderTraversal(root->left);
  47. c++;
  48. if(c==size) cout<<root->data<<endl;
  49. else cout<<root->data<<" ";
  50. inorderTraversal(root->right);
  51. }
  52. }
  53. void postorderTraversal(BstNode* root)
  54. {
  55. if(root!=NULL)
  56. {
  57. postorderTraversal(root->left);
  58. postorderTraversal(root->right);
  59. c++;
  60. if(c==size) cout<<root->data<<endl;
  61. else cout<<root->data<<" ";
  62. }
  63. }
  64.  
  65. void deletepostorderTraversal(BstNode*& root)
  66. {
  67. if(root!=NULL)
  68. {
  69. deletepostorderTraversal(root->left);
  70. deletepostorderTraversal(root->right);
  71. delete root;
  72. root=NULL;
  73. }
  74. }
  75. int main()
  76. {
  77. int test_case;
  78. while(cin>>test_case){
  79. cin>>size;
  80. BstNode* root=NULL; //create the root
  81. for(int i=0;i<size;i++)
  82. {
  83. int data;cin>>data;
  84. root=insert(root,data);
  85. }
  86. c=0;
  87. cout<<"Pre.: ";
  88. preorderTraversal(root);
  89. cout<<"In..: ";
  90. c=0;
  91. inorderTraversal(root);
  92. cout<<"Post: ";
  93. c=0;
  94. postorderTraversal(root);
  95. cout<<endl;
  96. deletepostorderTraversal(root); //delete all the nodes
  97.  
  98. if(root==NULL) cout<<"Deleted"<<endl;
  99.  
  100. // Start over creating a new root node with insert() ....
  101. }
  102. }
  103.  
Success #stdin #stdout 0s 3476KB
stdin
2
4
1 2 3 4
4
1 2 3 4
stdout
Pre.: 1 2 3 4
In..: 1 2 3 4
Post: 4 3 2 1

Deleted
Pre.: 2
In..: 2
Post: 2

Deleted
Pre.: 2 2 2 2
In..: 2 2 2 2
Post: 2 2 2 2

Deleted