Advertisement
dimon-torchila

Untitled

Jan 3rd, 2023
850
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.88 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 dfs1(lab3::TreeNode* root){
  9.     if(root == nullptr){
  10.         return;
  11.     } else {
  12.         cout << root->val;
  13.         dfs1(root->left);
  14.         dfs1(root->right);
  15.     }
  16. }
  17.  
  18. void dfs2(lab3::TreeNode* root){
  19.     if(root == nullptr){
  20.         return;
  21.     } else{
  22.         dfs2(root->left);
  23.         cout << root->val;
  24.         dfs2(root->right);
  25.     }
  26. }
  27.  
  28. bool Compare(int val, lab3::TreeNode* tree){
  29.     if(tree->val == val)
  30.         return true;
  31.     else{
  32.         if(tree != nullptr){
  33.             Compare(val, tree->left);
  34.             Compare(val, tree->right);
  35.         } else {
  36.             return false;
  37.         }
  38.     }
  39. }
  40.  
  41. int findMinEl(lab3::TreeNode*& root){
  42.     if(root->left == nullptr){
  43.         int val = root->val;
  44.         root = nullptr;
  45.         return val;
  46.     } else {
  47.         findMinEl(root->left);
  48.     }
  49. }
  50.  
  51. void DeleteNode(lab3::TreeNode *&root){
  52.     if(root == nullptr)
  53.         return;
  54.     else if(root->left == nullptr&& root->right == nullptr){
  55.         root = nullptr;
  56.     } else if(root->left != nullptr&& root->right == nullptr){
  57.         root = root->left;
  58.     } else if(root->left == nullptr&& root->right != nullptr){
  59.         root = root->right;
  60.     } else {
  61.         root->val = findMinEl(root);
  62.     }
  63. }
  64.  
  65.  
  66.  
  67. void multiplie(lab3::TreeNode*& a, lab3::TreeNode* b){
  68.     while (a != nullptr){
  69.         if(Compare(a->val, b)){
  70.             multiplie(a->left, b);
  71.             multiplie(a->right, b);
  72.         } else {
  73.             DeleteNode(a);
  74.             multiplie(a, b);
  75.         }
  76.     }
  77. }
  78.  
  79. int main(){
  80.     lab3::TreeNode *root1, *root2;
  81.     vector<int> v1 = {5,8,6,4,2,9}, v2 = {6,4,8,7,1,3};
  82.     for(int i = 0; i < v1.size(); ++i) {
  83.         lab3::Add(root1, v1[i]);
  84.         lab3::Add(root2, v2[i]);
  85.     }
  86.     multiplie(root1, root2);
  87.     dfs1(root1);
  88. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement