Build a templated version a binary search tree using a linked implementation along with functions for insertion and deletion. You must use the textbook's BinarySearchTree ADT as the base for your code. (See attached file.) Of course, you will need to modify the code a bit. Build a function that searches for a given item in the BST in the tree. It must return the number of compares that it used before returning as well as an indicator telling whether the sought item was or was not in the tree. Build a driver than inserts 10K unique random ints into the BST. Then, use the search function to seek the 1st, 500th, 5,000th, and 10,000th integers that were inserted in the tree, reporting the number of compares for each item. Also seek at least 2 integers that are not in the tree, one integer must be larger than the largest value in the tree and one integer must be within the range of values that are stored within the tree. Report the number of compares for these searches as well.