Advertisement
OMEGAHEAD_MonkoX

Untitled

May 4th, 2023
20
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.39 KB | None | 0 0
  1. #ifndef __TREE_NODE_H__
  2. #define __TREE_NODE_H__
  3.  
  4. #include "base_container.h"
  5. #include "errors.h"
  6.  
  7. using namespace std;
  8.  
  9. template <typename T>
  10. class tree_node: public enable_shared_from_this<tree_node<T>>
  11. {
  12. public:
  13. tree_node();
  14.  
  15. template<typename U>
  16. requires Convertable<U, T>
  17. tree_node(const U &data);
  18.  
  19. template<typename U>
  20. requires Convertable<U, T>
  21. explicit tree_node(shared_ptr<tree_node<U>> &node);
  22.  
  23. ~tree_node() = default;
  24.  
  25. template<typename U>
  26. requires Convertable<U, T>
  27. void set(const U &data);
  28.  
  29. void set_left(const shared_ptr<tree_node<T>> &node);
  30. void set_right(const shared_ptr<tree_node<T>> &node);
  31. void set_left();
  32. void set_right();
  33.  
  34. template<typename U>
  35. requires Convertable<U, T>
  36. tree_node<T> &operator = (const tree_node<U> &tree_node);
  37.  
  38. template<typename U>
  39. requires Convertable<U, T>
  40. tree_node<T> &operator = (const tree_node<U> &&tree_node);
  41.  
  42. const T &get() const;
  43. const T *get_pointer() const;
  44. shared_ptr<tree_node<T>> get_left() const;
  45. shared_ptr<tree_node<T>> get_right() const;
  46.  
  47. bool operator == (const shared_ptr<tree_node<T>> &node) const;
  48. bool operator != (const shared_ptr<tree_node<T>> &node) const;
  49.  
  50. private:
  51. T data;
  52. shared_ptr<tree_node<T>> left;
  53. shared_ptr<tree_node<T>> right;
  54. };
  55.  
  56. #include "tree_node.hpp"
  57.  
  58. #endif
  59.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement