Question: For this computer assignment using c++ implement a derived class to represent a binary search tree. Since a binary search tree is also a binary

For this computer assignment using c++ implement a derived class to represent a binary search tree. Since a binary search tree is also a binary tree, implement your binary search tree class from the base class of binary trees. Implement the following functions in to the code that is provided. The above public functions simply call their private versions. The private versions of insert (), remove (), search() and sumOfRange () functions can be implemented as recursive functions. You can assume there are no identical numbers to be inserted into the tree.

#include

#include

#include

#include

using namespace std;

static const int SEARCH_LOW = 20;

static const int SEARCH_HIGH = 30;

static const int MAX_COUNT = 20;

static int mcount = 0;

class BST : public binTree

{

public:

BST() : binTree() {}

void insert(int);

bool search(int);

bool remove(int);

int sumOfRange(int lower, const int upper);

private:

void insert(Node*&, int);

bool search(Node*&, int);

bool remove(Node*&, int);

int sumOfRange(Node*& n, const int lower, const int upper);

};

void display2(int d) {

if (mcount < MAX_COUNT) {

cout << setw(4) << d;

mcount++;

}

}

// produce a random number within range [1 1000]

int rand_1000() {

return rand() % 1000 + 1;

}

void show_tree_information(BST& bst) {

cout << "Size of the tree: " << bst.size() << endl;

cout << "Height of the tree: " << bst.height() << endl;

cout << "In order traverse (displaying first " << MAX_COUNT << " numbers): " << endl;

mcount = 0;

bst.inorder(display2);

cout << " Pre order traverse (displaying first " << MAX_COUNT << " numbers): " << endl;

mcount = 0;

bst.preorder(display2);

cout << " Post order traverse (displaying first " << MAX_COUNT << " numbers): " << endl;

mcount = 0;

bst.postorder(display2);

}

// For each value in searchVec, search it in the binary search tree

// and report the number of successful searches

void run_search(BST& bst, vector& searchVec) {

int success = 0;

vector::iterator it;

for (it = searchVec.begin(); it != searchVec.end(); it++)

if (bst.search(*it))

success++;

cout << endl << endl << "Out of " << searchVec.size() << " searches, " << success << " are successful." << endl << endl;

}

int main() {

//-------------- Create a B.S.T. using unique random numbers -----------

vector inputVec(1000);

srand(7);

generate(inputVec.begin(), inputVec.end(), rand_1000);

sort(inputVec.begin(), inputVec.end());

vector::iterator it = unique(inputVec.begin(), inputVec.end());

inputVec.resize(it - inputVec.begin());

random_shuffle(inputVec.begin(), inputVec.end());

BST bst;

for (it = inputVec.begin(); it != inputVec.end(); it++)

bst.insert(*it);

cout << "A binary search tree is generated with random numbers: " << endl;

show_tree_information(bst);

//-------------- Create a vector of random integers to be searched ------

vector searchVec(500);

srand(11);

generate(searchVec.begin(), searchVec.end(), rand_1000);

//cout << endl << endl << "Sum of range: " << bst.sumOfRange(SEARCH_LOW, SEARCH_HIGH) << endl;

//------------ test search operations ----------------

run_search(bst, searchVec);

//------------ remove half of nodes from the tree ---------

int counter = 0;

random_shuffle(inputVec.begin(), inputVec.end());

for (it = inputVec.begin(); it < inputVec.end(); it += 2) {

if (bst.remove(*it))

counter++;

}

cout << endl << counter << " nodes are removed." << endl << endl;

show_tree_information(bst);

cout << endl << endl << "Sum of range between " << SEARCH_LOW << " and "

<< SEARCH_HIGH << " : " << bst.sumOfRange(SEARCH_LOW, SEARCH_HIGH) << endl;

//-------------- test search operations again ---------------

run_search(bst, searchVec);

return 0;

}

Step by Step Solution

There are 3 Steps involved in it

1 Expert Approved Answer
Step: 1 Unlock blur-text-image
Question Has Been Solved by an Expert!

Get step-by-step solutions from verified subject matter experts

Step: 2 Unlock
Step: 3 Unlock

Students Have Also Explored These Related Databases Questions!