Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // .H
- #pragma once
- class TreeM
- {
- public:
- TreeM() = default;
- TreeM(const TreeM& other);
- void add(double value);
- bool contains(double value);
- private:
- struct Node
- {
- double data_ = 0;
- Node* lptr = nullptr;
- Node* rptr = nullptr;
- Node(const double value) : data_(value) {}
- };
- private:
- Node* root_ = nullptr;
- Node* insert(Node* node);
- void add(double value, Node* root);
- Node* search(double value, Node* root);
- };
- // .CPP
- #include "TreeM.h"
- TreeM::TreeM(const TreeM& other)
- {
- if (other.root_ != nullptr)
- {
- root_ = new Node(other.root_->data_);
- Node* temp = other.root_;
- }
- }
- void TreeM::add(double value)
- {
- if (root_ != nullptr)
- {
- add(value, root_);
- }
- else
- {
- root_ = new Node(value);
- }
- }
- bool TreeM::contains(double value)
- {
- if (root_ == nullptr)
- {
- return false;
- }
- else
- {
- return (search(value, root_) != nullptr);
- }
- }
- void TreeM::add(double value, Node* root)
- {
- if (value < root->data_) {
- if (root->lptr != nullptr) {
- add(value, root->lptr);
- }
- else {
- root->lptr = new Node(value);
- }
- }
- else if (value > root->data_) {
- if (root->rptr != nullptr) {
- add(value, root->rptr);
- }
- else {
- root->lptr = new Node(value);
- }
- }
- }
- TreeM::Node* TreeM::search(double value, Node* root)
- {
- if (value < root->data_) {
- if (root->lptr != nullptr) {
- return search(value, root->lptr);
- }
- }
- else if (value > root->data_) {
- if (root->rptr != nullptr) {
- return search(value, root->rptr);
- }
- }
- else {
- return root;
- }
- return nullptr;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement