Alex_tz307

BST

Sep 11th, 2020 (edited)
163
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.24 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2.  
  3. using namespace std;
  4.  
  5. ifstream fin ("text.in");
  6. ofstream fout ("text.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.   Insert (&tree, 2, nullptr);
  88.   Insert (&tree, 5, nullptr);
  89.   Insert (&tree, 7, nullptr);
  90.   Insert (&tree, 8, nullptr);
  91.   Insert (&tree, 9, nullptr);
  92.   Tree *node = Minimum (tree);
  93.   fout << node -> info;
  94.   fout << '\n';
  95.   Tree *Node = Maximum (tree);
  96.   fout << Node -> info;
  97.   fout << '\n';
  98.   InOrder_traversal(tree);
  99.   fout << '\n';
  100.   PreOrder_traversal(tree);
  101.   fout << '\n';
  102.   PostOrder_traversal(tree);
  103.   fout << '\n';
  104.   Tree *nod = Search (tree, 2);
  105.   if (nod != nullptr)
  106.     fout << "YES\n";
  107.   else
  108.     fout << "NO\n";
  109.   Tree *Nod = Search (tree, 10);
  110.   if (Nod != nullptr)
  111.     fout << "YES\n";
  112.   else
  113.     fout << "NO\n";
  114.   return 0;
  115. }
  116.  
Advertisement
Add Comment
Please, Sign In to add comment