# binary search tree 4

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

descendants.

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