Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #ifndef __TREE_NODE_H__
- #define __TREE_NODE_H__
- #include "base_container.h"
- #include "errors.h"
- using namespace std;
- template <typename T>
- class tree_node: public enable_shared_from_this<tree_node<T>>
- {
- public:
- tree_node();
- template<typename U>
- requires Convertable<U, T>
- tree_node(const U &data);
- template<typename U>
- requires Convertable<U, T>
- explicit tree_node(shared_ptr<tree_node<U>> &node);
- ~tree_node() = default;
- template<typename U>
- requires Convertable<U, T>
- void set(const U &data);
- void set_left(const shared_ptr<tree_node<T>> &node);
- void set_right(const shared_ptr<tree_node<T>> &node);
- void set_left();
- void set_right();
- template<typename U>
- requires Convertable<U, T>
- tree_node<T> &operator = (const tree_node<U> &tree_node);
- template<typename U>
- requires Convertable<U, T>
- tree_node<T> &operator = (const tree_node<U> &&tree_node);
- const T &get() const;
- const T *get_pointer() const;
- shared_ptr<tree_node<T>> get_left() const;
- shared_ptr<tree_node<T>> get_right() const;
- bool operator == (const shared_ptr<tree_node<T>> &node) const;
- bool operator != (const shared_ptr<tree_node<T>> &node) const;
- private:
- T data;
- shared_ptr<tree_node<T>> left;
- shared_ptr<tree_node<T>> right;
- };
- #include "tree_node.hpp"
- #endif
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement