Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <exception>
- #include <memory>
- struct Node {
- Node(int value): value(value) {}
- int value;
- std::shared_ptr<Node> left = nullptr;
- std::shared_ptr<Node> right = nullptr;
- };
- struct BinarySearchTree {
- std::shared_ptr<Node> root_node = nullptr;
- };
- void add(int value, std::shared_ptr<Node> ¤t) {
- if (current == nullptr) {
- Node new_node(value);
- current = std::make_shared<Node>(new_node);
- return;
- }
- if (value < current->value)
- add(value, current->left);
- if (value > current->value)
- add(value, current->right);
- if (value == current->value)
- throw std::exception();
- }
- int get(int value, std::shared_ptr<Node> ¤t) {
- if (value < current->value)
- get(value, current->left);
- if (value > current->value)
- get(value, current->right);
- return current->value;
- }
- int main() {
- BinarySearchTree test;
- add(8, test.root_node);
- add(6, test.root_node);
- add(3, test.root_node);
- std::cout << get(8, test.root_node) << std::endl;
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment