Advertisement
Guest User

Untitled

a guest
Mar 19th, 2019
50
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.50 KB | None | 0 0
  1. #include <cstddef>
  2.  
  3. using namespace std;
  4.  
  5. BSTNode<int> tree = {
  6. 19,
  7. {
  8. 7,
  9. {3, 2, 5},
  10. {
  11. 11,
  12. nullptr,
  13. {17, 13, nullptr}
  14. }
  15. },
  16. {
  17. 43,
  18. {
  19. 23,
  20. nullptr,
  21. {
  22. 37,
  23. {29, nullptr, 31},
  24. 41
  25. }
  26. },
  27. {47, nullptr, 53}
  28. }
  29. };
  30.  
  31. #include <cstddef>
  32. #include <initializer_list>
  33. #include <memory>
  34.  
  35. template <typename T>
  36. class BSTNode {
  37. private:
  38. using node_ptr = std::unique_ptr<BSTNode<T>>;
  39.  
  40. public:
  41. T data;
  42. node_ptr left;
  43. node_ptr right;
  44.  
  45. private:
  46. struct BSTNode_reference {
  47. node_ptr reference;
  48.  
  49. BSTNode_reference (std::nullptr_t null) {}
  50.  
  51. BSTNode_reference (T&& data) :
  52. reference(std::make_unique<BSTNode<T>>(BSTNode(std::forward<T>(data)))) {}
  53.  
  54. BSTNode_reference (node_ptr&& node_pointer) :
  55. reference(std::forward(node_pointer)) {}
  56.  
  57. BSTNode_reference (T&& data, BSTNode_reference&& left, BSTNode_reference&& right) :
  58. reference(std::make_unique<BSTNode<T>>(BSTNode(std::forward<T>(data),
  59. std::forward<BSTNode_reference>(left),
  60. std::forward<BSTNode_reference>(right)))) {}
  61. };
  62.  
  63. public:
  64. BSTNode (T&& data) : data(std::forward<T>(data)) {}
  65.  
  66. BSTNode (T&& data, BSTNode_reference&& left, BSTNode_reference&& right) :
  67. data(data),
  68. left(std::forward<node_ptr>(left.reference)),
  69. right(std::forward<node_ptr>(right.reference)) {}
  70. };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement