Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <cstddef>
- using namespace std;
- BSTNode<int> tree = {
- 19,
- {
- 7,
- {3, 2, 5},
- {
- 11,
- nullptr,
- {17, 13, nullptr}
- }
- },
- {
- 43,
- {
- 23,
- nullptr,
- {
- 37,
- {29, nullptr, 31},
- 41
- }
- },
- {47, nullptr, 53}
- }
- };
- #include <cstddef>
- #include <initializer_list>
- #include <memory>
- template <typename T>
- class BSTNode {
- private:
- using node_ptr = std::unique_ptr<BSTNode<T>>;
- public:
- T data;
- node_ptr left;
- node_ptr right;
- private:
- struct BSTNode_reference {
- node_ptr reference;
- BSTNode_reference (std::nullptr_t null) {}
- BSTNode_reference (T&& data) :
- reference(std::make_unique<BSTNode<T>>(BSTNode(std::forward<T>(data)))) {}
- BSTNode_reference (node_ptr&& node_pointer) :
- reference(std::forward(node_pointer)) {}
- BSTNode_reference (T&& data, BSTNode_reference&& left, BSTNode_reference&& right) :
- reference(std::make_unique<BSTNode<T>>(BSTNode(std::forward<T>(data),
- std::forward<BSTNode_reference>(left),
- std::forward<BSTNode_reference>(right)))) {}
- };
- public:
- BSTNode (T&& data) : data(std::forward<T>(data)) {}
- BSTNode (T&& data, BSTNode_reference&& left, BSTNode_reference&& right) :
- data(data),
- left(std::forward<node_ptr>(left.reference)),
- right(std::forward<node_ptr>(right.reference)) {}
- };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement