int main() { RedBlackTree<int, int> tree; /*for(int i = 0; i<10; i++) { std::pair<int, int> item; item.first = i; item.second = i; tree.insert(item); }*/ std::pair<int, int> item; item.first = 0; item.second = 0; tree.insert(item); tree.print(); item.first = 1; item.second = 1; tree.insert(item); tree.print(); item.first = 2; item.second = 2; tree.insert(item); tree.print(); item.first = 3; item.second = 2; tree.insert(item); tree.print(); item.first = 4; item.second = 2; tree.insert(item); tree.print(); item.first = 6; item.second = 2; tree.insert(item); tree.print(); item.first = 1; item.second = 2; tree.insert(item); tree.print(); for(BinarySearchTree<int, int>::iterator it = tree.begin(); it != tree.end(); ++it) { std::cout << it->first << " "; } return 0; }
int main(){ RedBlackTree<int, char>* tree = new RedBlackTree<int,char>(); cout << "Constructed Tree" << endl; cout << "Insert 10, A" << endl; pair<int, char> p1(10,'a'); tree->insert(p1); tree->print2(); cout << endl; cout << "Insert Duplicate 10, X" << endl; pair<int, char> p123(10,'x'); tree->insert(p123); tree->print2(); cout << endl; cout << "Insert 20, B" << endl; pair<int, char> p2(20,'b'); tree->insert(p2); tree->print2(); cout << endl; cout << "Insert 30, C" << endl; pair<int, char> p3(30,'c'); tree->insert(p3); tree->print2(); cout << endl; cout << "Insert 15, D" << endl; pair<int, char> p4(15,'d'); tree->insert(p4); tree->print2(); cout << endl; cout << "Insert 25, E" << endl; pair<int, char> p5(25,'e'); tree->insert(p5); tree->print2(); cout << endl; cout << "Insert 12, F" << endl; pair<int, char> p6(12,'f'); tree->insert(p6); tree->print2(); cout << endl; cout << "Insert 5, G" << endl; pair<int, char> p7(5,'g'); tree->insert(p7); tree->print2(); cout << endl; cout << "Insert 3, H" << endl; pair<int, char> p8(3,'h'); tree->insert(p8); tree->print2(); cout << endl; cout << "Insert 8, I" << endl; pair<int, char> p9(8,'i'); tree->insert(p9); tree->print2(); cout << endl; cout << "Insert 27, j" << endl; pair<int, char> p10(27,'j'); tree->insert(p10); tree->print2(); cout << endl; cout << "Insert 40, k" << endl; pair<int, char> p11(40,'k'); tree->insert(p11); tree->print2(); cout << endl; cout << "Insert 50, z" << endl; pair<int, char> p14(50,'z'); tree->insert(p14); tree->print2(); cout << endl; cout << "Insert 45, l" << endl; pair<int, char> p12(45,'l'); tree->insert(p12); tree->print2(); cout << endl; cout << "Insert 9, m" << endl; pair<int, char> p13(9,'m'); tree->insert(p13); tree->print2(); cout << endl; cout << "Testing Iteration:" << endl; for(RedBlackTree<int,char>::iterator it = tree->begin(); it!=tree->end(); ++it){ cout << (*it).first << " "; } cout << endl; return 0; }
int main(int argc, const char *argv[]) { // Make sure the right number of command line arguments exist. if (!(argc == 3 || argc == 2)) { cerr << "Usage: " << argv[0] << " <filename> [limit]" << endl; return 1; } // Create an ifstream object. ifstream input_file(argv[1]); // If it does not exist, print an error message. if (!input_file) { cerr << "Error: Cannot open file '" << argv[1] << "' for input." << endl; return 1; } if (argc == 3 && !is_number(argv[2])) { cerr << "Error: Invalid limit '" << argv[2] << "' received." << endl; return 1; } int limit; if (argc == 3) { limit = atoi(argv[2]); } else { limit = 10; } if (limit < 0) { cerr << "Error: Invalid limit '" << argv[2] << "' received." << endl; return 1; } RedBlackTree<string, int> *tree; tree = new RedBlackTree<string, int>(); // Add read errors to the list of exceptions the ifstream will handle. input_file.exceptions(ifstream::badbit); string line; unsigned int maxwordwidth = 0; try { // Use getline to read in a line. // See http://www.cplusplus.com/reference/string/string/getline/ while (getline(input_file, line)) { string buf; // Have a buffer string stringstream ss(line); // Insert the string into a stream vector<string> tokens; // Create vector to hold our words while (ss >> buf) { tokens.push_back(buf); string nopunct = removePunct(buf); RedBlackTree<string, int>::iterator it = tree->find(nopunct); if (it == tree->end()) { if (nopunct != "") tree->insert(nopunct, 1); } else { it->second++; } } } // Don't forget to close the file. input_file.close(); } catch (const ifstream::failure &f) { cerr << "Error: An I/O error occurred reading '" << argv[1] << "'."; } vector<Node<string, int> > sorted; for (RedBlackTree<string, int>::iterator it = tree->begin(); it != tree->end(); ++it) { Node<string, int> n(it->first, it->second); sorted.push_back(n); } sort(sorted.begin(), sorted.end(), lessthanfun); //loop through sorted from 0 to limit to determine the largest word size int wordnum = 1; for (vector<Node<string, int> >::iterator it = sorted.begin(); it != sorted.end(); ++it) { if ((it->kv_pair_.first).size() > maxwordwidth) { maxwordwidth = (it->kv_pair_.first).size(); } if (wordnum >= limit) { break; } wordnum++; } wordnum = 1; cout << "Total unique words: " << tree->size() << endl; int numwidth = numDigits(min((int) tree->size(), limit)); for (vector<Node<string, int> >::iterator it = sorted.begin(); it != sorted.end(); ++it) { string numstring = ""; int thisnumwidth = numDigits(wordnum); for (int i = 0; i < numwidth - thisnumwidth; i++) { numstring += " "; } stringstream convert; convert << wordnum; numstring += convert.str(); string wordoutput = it->kv_pair_.first; for (size_t i = 0; i < maxwordwidth - (it->kv_pair_.first).size() + 1; i++) { wordoutput += " "; } cout << numstring << ". " << wordoutput << it->kv_pair_.second << endl; if (wordnum >= limit) { break; } wordnum++; } return 0; }