Advertisement
dimon-torchila

Untitled

Jan 2nd, 2023
997
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.53 KB | None | 0 0
  1. #include "lab1.h"
  2. #include "lab2.h"
  3. #include "lab3.h"
  4.  
  5. using namespace std;
  6.  
  7. /*
  8. void sort(lab1::Queue<int>& q){
  9.     for(int i = 0; i < q.size(); ++i){
  10.         int mn = INT_MAX;
  11.         int first = 0, temp = 0;
  12.         bool swap = true;
  13.         for(int j = 0; j < i; ++j){
  14.             temp = q.front();
  15.             q.pop();
  16.             q.push(temp);
  17.         }
  18.         first = q.front();
  19.         for(int j = i; j < q.size(); ++j){
  20.             temp = q.front();
  21.             mn = min(q.front(), mn);
  22.             q.pop();
  23.             q.push(temp);
  24.         }
  25.         for(int j = 0; j < i; ++j){
  26.             temp = q.front();
  27.             q.pop();
  28.             q.push(temp);
  29.         }
  30.         for(int j = i; j < q.size(); ++j){
  31.             temp = q.front();
  32.             q.pop();
  33.             if(temp == mn && swap) {
  34.                 q.push(first);
  35.                 swap = false;
  36.             }
  37.             else if(i == j) {
  38.                 q.push(mn);
  39.             }
  40.             else
  41.                 q.push(temp);
  42.         }
  43.     }
  44. }
  45.  
  46.  
  47. int main(){
  48.     srand(time(nullptr));
  49.     lab1::Queue<int> queue(50000);
  50.     for(int i = 0; i < queue.size(); ++i)
  51.         queue.push(rand() % 100000);
  52.     queue.print();
  53.     ::clock_t time = ::clock();
  54.     sort(queue);
  55.     time = ::clock() - time;
  56.     cout << endl;
  57.     queue.print();
  58.  
  59.     cout << 1000* time / CLOCKS_PER_SEC;
  60.     return 0;
  61. }*/
  62.  
  63.  
  64.  
  65. /*int main(){
  66.     lab2::Graph G(4);
  67.     set<int> visited;
  68.     int cCount;
  69.     cin >> cCount;
  70.     for(int i = 0; i < cCount; ++i){
  71.         char first_v, second_v;
  72.         int weight;
  73.         cin >> first_v >> second_v >> weight;
  74.         G.Add_E(first_v, second_v, weight);
  75.     }
  76.     G.print();
  77.  
  78.  
  79.     return 0;
  80. }*/
  81. /*
  82. 4
  83. a c 5
  84. b c 11
  85. c b 3
  86. d a 7
  87.  */
  88.  
  89. void dfs1(lab3::TreeNode* root){
  90.     if(root == nullptr){
  91.         return;
  92.     } else {
  93.         cout << root->val;
  94.         dfs1(root->left);
  95.         dfs1(root->right);
  96.     }
  97. }
  98.  
  99. void dfs2(lab3::TreeNode* root){
  100.     if(root == nullptr){
  101.         return;
  102.     } else{
  103.         dfs2(root->left);
  104.         cout << root->val;
  105.         dfs2(root->right);
  106.     }
  107. }
  108.  
  109. bool Compare(int val, lab3::TreeNode* tree){
  110.     if(tree->val == val)
  111.         return true;
  112.     else{
  113.         if(tree != nullptr){
  114.             Compare(val, tree->left);
  115.             Compare(val, tree->right);
  116.         } else {
  117.             return false;
  118.         }
  119.     }
  120. }
  121.  
  122. int findMinEl(lab3::TreeNode*& root){
  123.     if(root->left == nullptr){
  124.         int val = root->val;
  125.         root = nullptr;
  126.         return val;
  127.     } else {
  128.         findMinEl(root->left);
  129.     }
  130. }
  131.  
  132. void DeleteNode(lab3::TreeNode *&root){
  133.     if(root == nullptr)
  134.         return;
  135.     else if(root->left == nullptr&& root->right == nullptr){
  136.         root = nullptr;
  137.     } else if(root->left != nullptr&& root->right == nullptr){
  138.         root = root->left;
  139.     } else if(root->left == nullptr&& root->right != nullptr){
  140.         root = root->right;
  141.     } else {
  142.         root->val = findMinEl(root);
  143.     }
  144. }
  145.  
  146.  
  147.  
  148. void multiplie(lab3::TreeNode*& a, lab3::TreeNode* b){
  149.     while (a != nullptr){
  150.         if(Compare(a->val, b)){
  151.             multiplie(a->left, b);
  152.             multiplie(a->right, b);
  153.         } else {
  154.             DeleteNode(a);
  155.         }
  156.     }
  157. }
  158.  
  159. int main(){
  160.     lab3::TreeNode *root1, *root2;
  161.     vector<int> v1 = {5,8,6,4,2,9}, v2 = {6,4,8,7,1,3};
  162.     for(int i = 0; i < v1.size(); ++i) {
  163.         lab3::Add(root1, v1[i]);
  164.         lab3::Add(root2, v2[i]);
  165.     }
  166.     multiplie(root1, root2);
  167.     dfs1(root1);
  168. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement