Question
Name the program for this assignment bst_driver.cpp. In this assignment you will make several modifications to the BST class in the file bst.cpp that I
Name the program for this assignment "bst_driver.cpp." In this assignment you will make several modifications to the BST class in the file bst.cpp that I provided. Consider the following:
1. Change the declaration of treenode to
class treenode //node in a BST
{
public:
string county_name;
double population_size;
treenode *lchild, *rchild; //left and right children pointers
};
2. Make the following changes to the BST class:
change the name from BST to bst;
change default constructor from BST to bst;
leave empty as is;
leave insert as is;
change name of insert_aux to insert;
change name del to del_name;
change name of del_aux to del_name with a different signature than f above;
leave search_tree as is;
change name of search_tree_aux to search_tree;
leave inorder_succ as is;
leave print_tree as is;
change name of print_tree_aux to print_tree.
leave private area (the state) as is;
consider the following class declaration:
class bst
{
public:
bst (); //store the data file (county_data.txt) into initial bst
~bst();//de-allocates dynamic memory allocate for tree
bool empty(); // checks to see if the tree is empty
void insert(const string & item, const double & population); //inserts a county record into bst based on
//county_name.
void insert(treenode * &, string item); //see insert description above
void del_name(string item); //deletes a county record based on county name.
void del_name(treenode * & loc_ptr, string item); //see del description above
treenode * search_tree(treenode *,string item);//returns pointer to node with county name
treenode * search_tree(string item); //see search_tree description above
treenode * inorder_succ(treenode *);//return pointer to inorder successor (based on population
//size;
void population_ranges(const double& min_size, const double & max_size); //prints all county names
//o the screen with a population size between min_size and max_size.
void sorted_info( );//prints each county record to a file called county_info.txt sorted by county
//name.
void print_tree(); //prints the node in the bst in numerical order based on the population size
void print_tree(treenode *);//see description above
private:
treenode *root;
};
3. Notes on implementation of population_ranges, sorted_info, del_population, and del_name are as follows:
The void member function population_ranges that accepts two values that represents a population size range and prints all the counties with a population size in the range. Consider the following prototype:
void population_ranges(const double& min_size, const double & max_size);
The void member function sorted_info that has no formal parameters. This function will print the county information (name and population) to the file county_info.txt. Consider the following prototype that goes inside the class declaration:
void sorted_info( );
void del_name(string item) deletes a county record based on county name. This function is called from main. Remember the tree is sorted (based) on county name
void del_name(treenode * & loc_ptr, string item) is an auxiliary function to help delete a county record based on county name. It is a member function that can only be called by another member of the class.
All the data for this program is stored in the file county_data.txt. The county name is listed first, followed by the population size. Separate the class declaration and implementation files. Call the header (declaration) for the bst, bst.h and the implementation file, bst.cpp. Call the driver, bst_driver.cpp.
This is the "county_data.txt":
Alachua 249365 Baker 27154 Bay 169856 Bradford 28255 Brevard 543566 Broward 1780172 Calhoun 14750 Charlotte 160511 Citrus 140031 Clay 192970 Collier 328134 Columbia 67485 DeSoto 34894 Dixie 16486 Duval 870709 Escambia 299114 Flagler 97376 Franklin 11596 Gadsden 46151 Gilchrist 17004 Glades 12635 Gulf 15844 Hamilton 14671 Hardee 27887 Hendry 39089 Hernando 173094 Highlands 98630 Hillsborough 1267775 Holmes 19873 Indian River 138894 Jackson 49292 Jefferson 14658 Lafayette 8942 Lake 301019 Lee 631330 Leon 277971 Levy 40156 Liberty 8314 Madison 19115 Manatee 327142 Marion 332529 Martin 147495 Miami-Dade 2662874 Monroe 73873 Nassau 74195 Okaloosa 183482 Okeechobee 40140 Orange 1169107 Osceola 276163 Palm Beach 1335187 Pasco 466457 Pinellas 917398 Polk 609492 Putnam 74041 Santa Rosa 154104 Sarasota 38213 Seminole 425071 St. Johns 195823 St. Lucie 280379 Sumter 97756 Suwannee 41972 Taylor 22691 Union 15388 Volusia 494804 Wakulla 30978 Walton 55793 Washington 24935
This is the "bst-1.cpp":
#include #include
using namespace std;
class treenode { public: string info; treenode *lchild, *rchild; };
class BST { public: BST(){root=0;} ~BST(); bool empty(); void insert(string item); void insert_aux(treenode * &, string item); void del(string item); void del_aux(treenode * & loc_ptr, string item); treenode * search_tree_aux(treenode *,string item); treenode * search_tree(string item); treenode * inorder_succ(treenode *); treenode * parent(); void print_tree(); void print_tree_aux(treenode *);
private: treenode *root;
};
bool BST::empty() { return (root==0); }
void BST::insert(string item) { insert_aux(root,item); } void BST::insert_aux(treenode * & loc_ptr,string item) { if (loc_ptr==0) { loc_ptr = new treenode; loc_ptr->lchild=loc_ptr->rchild=0; loc_ptr->info=item; } else if (loc_ptr->info>item) insert_aux(loc_ptr->lchild,item); else if (loc_ptr->info insert_aux(loc_ptr->rchild,item); else cout<<"the item is already in the tree "; }
treenode * BST::search_tree(string item) { return search_tree_aux(root, item); }
treenode * BST::search_tree_aux(treenode * loc_ptr, string item) { if (loc_ptr!=0) { if(loc_ptr->info==item) return loc_ptr; else if (loc_ptr->info>item) return search_tree_aux(loc_ptr->lchild,item); else return search_tree_aux(loc_ptr->rchild,item); } else return loc_ptr; }
void BST::del(string item) { del_aux(root,item); }
void BST::del_aux(treenode * & loc_ptr, string item) {
if (loc_ptr==0) cout<<"item not in tree ";
else if (loc_ptr->info > item) del_aux(loc_ptr->lchild, item);
else if (loc_ptr->info < item) del_aux(loc_ptr->rchild, item); else { treenode * ptr;
if (loc_ptr->lchild == 0) { ptr=loc_ptr->rchild; delete loc_ptr; loc_ptr=ptr; } else if (loc_ptr->rchild == 0) { ptr=loc_ptr->lchild; delete loc_ptr; loc_ptr=ptr; } else { ptr=inorder_succ(loc_ptr); loc_ptr->info = ptr->info; del_aux(loc_ptr->rchild, ptr->info); } }
}
treenode * BST::inorder_succ(treenode * loc_ptr) {
treenode *ptr=loc_ptr->rchild;
while(ptr->lchild!=0) { ptr=ptr->lchild; } return ptr; } void BST::print_tree() { print_tree_aux(root); }
void BST::print_tree_aux(treenode * loc_ptr) { if (loc_ptr!=0) { print_tree_aux(loc_ptr->lchild); cout
BST::~BST() { while (root!=0) { del(root->info); } }
int main() { BST B; //treenode *root1=0, *root2=0; string s; char ch; string key3; string key4; string response; string r1, r2; cout<<"enter command, c=count, i=insert item,s=search tree,d=delete item,p=print tree, r = range, e=exit: "; cin>>ch; cout<
while (ch!='e') { switch (ch) { case 'i' :cout<<"enter string: "; cin>>s; B.insert(s); break; case 's' :cout<<"enter word to search for: "; cin>>s; if (!B.search_tree(s)) cout<
This is the "bst_driver.cpp":
int main( ) {
cout<<"Test1: default constructor "; bst myTree;
myTree.print_tree(); cout<<"End Test1 ";
cout<<"Test2:insert "; myTree.insert("new-county", 234658); myTree.print_tree(); cout<<"End Test2 ";
cout<<"Test3: population_ranges "; myTree.population_ranges(0,50000); cout<<"End Test3 ";
cout<<"Test4: del_name "; myTree.del_name("miami-dade"); cout<<"End Test5 ";
cout<<"Test5: sorted_info "; myTree.sorted_info(); cout<<"End Test6 ";
return 0;
}
EDIT: The "bst-1.cpp" provided is a sample program that should be the basis of the program. The instructions above it ask for complete changes to the definitions to fit the assignment. The only functions that should be in program are the functions listed inside the instructions.
Step by Step Solution
There are 3 Steps involved in it
Step: 1
Get Instant Access to Expert-Tailored Solutions
See step-by-step solutions with expert insights and AI powered tools for academic success
Step: 2
Step: 3
Ace Your Homework with AI
Get the answers you need in no time with our AI-driven, step-by-step assistance
Get Started