Write a program for the creation of a BinarySearchTree.
1. It should contain methods for creating and inserting new node, deleting a node and for
searching a value in tree.
2. Also, add the following methods to the BinarySearchTree class:
numBelow(value) Returns the number of tree entries that are smaller than value.
numAbove(value) Returns the number of tree entries that are bigger than value.
numofComp(value) Returns the number of comparisons made before a successful
or unsuccessful search of the value.
height() Returns the height of the tree, i.e., the length of the longest path
from the root to a leaf.
size() Returns the size of the tree, i.e., the count of all the node
3. Be sure to test your methods thoroughly before continuing.
4. It has been proven that adding N random elements to a binary search tree will produce, on
average, a tree with O (log N) height. In addition, the average search cost (average # of
comparison) for an arbitrary item in such a binary search tree is O (log N) (You can
generate a random number and search it in BST arbitrarily). You are to verify these results
experimentally. Write a program that prompts the user for the number of items to be stored
(N) and the number of trees to generate (T). Then, it should repeatedly (T times) store N
random numbers in a binary search tree and compute the height and average cost of
searching that tree.
Your program should display the average of these heights and costs over all of the
constructed trees. For example,
Number of values to be stored: 1000
Number of trees to generate: 100
Generating 100 trees with 1000 random values:
average cost = 11.9146
average height = 21.76