Introduction to Programming Assignment 7, 10 Nov, 2004 Due Fri 19 Nov, 20 Balanced search trees Write a module BalancedSearchTree that implements balanced binary search trees. Use the name "BStree a" to denote the datatype. Your implementation should support the following functions. a. find :: (BStree a) -> a -> Bool -- Reports whether the given value is found in the tree b. insert :: (BStree a) -> a -> (BStree a) -- Inserts a value into the tree, maintaining logarithmic -- height c. delete :: (BStree a) -> a -> (BStree a) -- Deletes a value from the tree, maintaining logarithmic -- height d. height :: (BStree a) -> Int -- Returns the height of the tree e. size :: (BStree a) -> Init -- Returns the number of nodes in the tree f. isemptytree :: (BStree a) -> Bool -- Tells whether the tree is empty g. emptytree :: (BStree a) -- Returns an empty tree h. buildtree :: [a] -> (BStree a) -- Build a search tree in linear time from a sorted list i. listtree :: (BStree a) -> [a] -- List out the values in the tree in ascending order, in -- linear time