Alex_tz307

BST infoarena incomplet

Nov 7th, 2020
140
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.21 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2.  
  3. using namespace std;
  4.  
  5. ifstream fin("abce.in");
  6. ofstream fout("abce.out");
  7.  
  8. struct Tree {
  9.     int info;
  10.     Tree *parent, *left, *right;
  11. };
  12.  
  13. Tree *tree;
  14.  
  15. void Insert(Tree **l, int x, Tree *parent) {
  16.     Tree *p;
  17.     if(*l == NULL) {
  18.         p = new Tree;
  19.         p -> info = x;
  20.         p -> left = p -> right = nullptr;
  21.         p -> parent = parent;
  22.         *l = p;
  23.         return;
  24.     }
  25.     if(x < (*l) -> info)
  26.         Insert(&((*l) -> left), x, *l);
  27.     else
  28.         Insert(&((*l) -> right), x, *l);
  29. }
  30.  
  31. Tree *Search(Tree *l, int x) {
  32.     if(l == nullptr)
  33.         return nullptr;
  34.     if(l -> info == x)
  35.         return l;
  36.     if(x < l -> info)
  37.         return Search(l -> left, x);
  38.     else
  39.         return Search(l -> right, x);
  40. }
  41.  
  42. Tree *Minimum(Tree *T) {
  43.     Tree *Min;
  44.     if(T == nullptr)
  45.         return nullptr;
  46.     Min = T;
  47.     while (Min -> left != nullptr)
  48.         Min = Min -> left;
  49.     return Min;
  50. }
  51.  
  52. Tree *Maximum(Tree *T) {
  53.     Tree *Max;
  54.     if(T == nullptr)
  55.         return nullptr;
  56.     Max = T;
  57.     while(Max -> right != nullptr)
  58.         Max = Max -> right;
  59.     return Max;
  60. }
  61.  
  62. void InOrder_traversal(Tree *l) {
  63.     if(l != nullptr) {
  64.         InOrder_traversal(l -> left);
  65.         fout << l -> info << ' ';
  66.         InOrder_traversal(l -> right);
  67.     }
  68. }
  69.  
  70. void PreOrder_traversal(Tree *l) {
  71.     if(l != nullptr) {
  72.         fout << l -> info << ' ';
  73.         PreOrder_traversal(l -> left);
  74.         PreOrder_traversal(l -> right);
  75.     }
  76. }
  77.  
  78. void PostOrder_traversal(Tree *l) {
  79.     if(l != nullptr) {
  80.         PostOrder_traversal(l -> left);
  81.         PostOrder_traversal(l -> right);
  82.         fout << l -> info << ' ';
  83.     }
  84. }
  85.  
  86. int main () {
  87.     int Q;
  88.     fin >> Q;
  89.     while(Q--) {
  90.         int type, x;
  91.         fin >> type >> x;
  92.         if(type == 1)
  93.             Insert(&tree, x, nullptr);
  94.         if(type == 2) {
  95.             Tree *node = Search(tree, x);
  96.             if(node != nullptr)
  97.                 Erase(&tree, node);
  98.         }
  99.         if(type == 3) {
  100.             Tree *node = Search(tree, x);
  101.             if(node != nullptr)
  102.                 fout << "1\n";
  103.             else
  104.                 fout << "0\n";
  105.         }
  106.  
  107.     }
  108. }
  109.  
Advertisement
Add Comment
Please, Sign In to add comment