Advertisement
dimon-torchila

Untitled

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