Advertisement
dimon-torchila

Untitled

Jan 3rd, 2023
842
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.87 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.         root = nullptr;
  39.         return val;
  40.     } else {
  41.         return findMinEl(root->left);
  42.     }
  43. }
  44.  
  45. void DeleteNode(lab3::TreeNode *&root){
  46.     if(root == nullptr)
  47.         return;
  48.     else if(root->left == nullptr&& root->right == nullptr){
  49.         root = nullptr;
  50.     } else if(root->left != nullptr&& root->right == nullptr){
  51.         root = root->left;
  52.     } else if(root->left == nullptr&& root->right != nullptr){
  53.         root = root->right;
  54.     } else {
  55.         root->val = findMinEl(root->right);
  56.     }
  57. }
  58.  
  59.  
  60.  
  61. void multiplie(lab3::TreeNode*& a, lab3::TreeNode* b){
  62.     while (a != nullptr){
  63.         if(Compare(a->val, b)){
  64.             multiplie(a->left, b);
  65.             multiplie(a->right, b);
  66.             break;
  67.         } else {
  68.             DeleteNode(a);
  69.             multiplie(a, b);
  70.         }
  71.     }
  72. }
  73.  
  74. int main(){
  75.     lab3::TreeNode *root1 = nullptr, *root2 = nullptr;
  76.     vector<int> v1 = {5,8,6,9,3}, v2 = {6,4,8,3,7};
  77.     for(int i = 0; i < v1.size(); ++i) {
  78.         lab3::Add(root1, v1[i]);
  79.         lab3::Add(root2, v2[i]);
  80.     }
  81.     multiplie(root1, root2);
  82.     dfs1(root1);
  83. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement