Advertisement
Arhons

Untitled

Apr 7th, 2022
38
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.58 KB | None | 0 0
  1. // .H
  2.  
  3. #pragma once
  4. class TreeM
  5. {
  6. public:
  7.    
  8.  
  9.     TreeM() = default;
  10.     TreeM(const TreeM& other);
  11.     void add(double value);
  12.     bool contains(double value);
  13.  
  14. private:
  15.     struct Node
  16.     {
  17.         double data_ = 0;
  18.         Node* lptr = nullptr;
  19.         Node* rptr = nullptr;
  20.         Node(const double value) : data_(value) {}
  21.     };
  22. private:
  23.     Node* root_ = nullptr;
  24.     Node* insert(Node* node);
  25.     void add(double value, Node* root);
  26.     Node* search(double value, Node* root);
  27. };
  28.  
  29.  
  30. // .CPP
  31.  
  32. #include "TreeM.h"
  33.  
  34. TreeM::TreeM(const TreeM& other)
  35. {
  36.     if (other.root_ != nullptr)
  37.     {
  38.         root_ = new Node(other.root_->data_);
  39.         Node* temp = other.root_;
  40.     }  
  41. }
  42.  
  43. void TreeM::add(double value)
  44. {
  45.     if (root_ != nullptr)
  46.     {
  47.         add(value, root_);
  48.     }
  49.     else
  50.     {
  51.         root_ = new Node(value);
  52.     }
  53. }
  54.  
  55. bool TreeM::contains(double value)
  56. {
  57.     if (root_ == nullptr)
  58.     {
  59.         return false;
  60.     }
  61.     else
  62.     {
  63.         return (search(value, root_) != nullptr);
  64.     }
  65. }
  66.  
  67. void TreeM::add(double value, Node* root)
  68. {
  69.     if (value < root->data_) {
  70.         if (root->lptr != nullptr) {
  71.             add(value, root->lptr);
  72.         }
  73.         else {
  74.             root->lptr = new Node(value);
  75.         }
  76.     }
  77.     else if (value > root->data_) {
  78.         if (root->rptr != nullptr) {
  79.             add(value, root->rptr);
  80.         }
  81.         else {
  82.             root->lptr = new Node(value);
  83.         }
  84.     }
  85. }
  86.  
  87. TreeM::Node* TreeM::search(double value, Node* root)
  88. {
  89.     if (value < root->data_) {
  90.         if (root->lptr != nullptr) {
  91.             return search(value, root->lptr);
  92.         }      
  93.     }
  94.     else if (value > root->data_) {
  95.         if (root->rptr != nullptr) {
  96.             return search(value, root->rptr);
  97.         }
  98.     }
  99.     else {
  100.         return root;
  101.     }
  102.  
  103.     return nullptr;
  104. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement