#include #include "stdafx.h" templatestruct Node; template struct Node { T key; std::shared_ptr left; std::shared_ptr right; Node(T); }; template Node::Node(T item){ key = item; left = nullptr; right = nullptr; } template struct BST { std::shared_ptr>root; BST(); bool insert(T x); bool find(T x); bool erase(T x); Node& min(void); Node& max(void); }; template bool BST::insert(T val) { } template bool BST::find(T val) { if (root == NULL) { std::cout << "tree is empty, cannot find this value" << std::endl; return false; } else { std::shared_ptr> current = root; while (current != NULL) { if (current->key == val) { std::cout << "Found value: " + current->key << std::endl; return true; } current = (current->key > val) ? (current->left) : (current->right); } std::cout << "Cannot find this value:"<< std::endl; return false; } } template bool BST::erase(T val) { } template Node & BST::min(void) { } template Node & BST::max(void) { }