int main(int argc, char** argv) { atexit(ExitHook); BST<int> bst; Dumper<int> dumper; std::vector<int> vec; vec.reserve(NT); for (int i = 0; i < N; ++i) vec.push_back(i); std::random_shuffle(vec.begin(), vec.end()); #if DUMP std::copy(vec.begin(), vec.end(), std::ostream_iterator<int>(std::cout, " ")); std::endl(std::cout); #endif for (int i = 0; i < (int)vec.size(); ++i) bst.Insert(vec[i]); #if DUMP bst.Accept(dumper); std::endl(std::cout); #endif for (int i = 0; i < NT; ++i) { bool ret = bst.Remove(i); #if DUMP std::cout << "Remove " << i << " " << ret << std::endl; #endif } #if DUMP bst.Accept(dumper); std::endl(std::cout); #endif return 0; }
int main(){ BST testBST; BST testAssign; BNode* temp; int data; PrintMenu(); cout << "-->"; char choice; cin >> choice; while(choice != 'q' && choice != 'Q'){ if (choice == '!'){ BST testCopy(testBST); cout << "Result:" << "Print New Copy" << endl; testCopy.PrintIn(cout); cout << endl; testCopy.Insert(-10000); cout << "Result: " << "Print Modified Copy" << endl; testCopy.PrintIn(cout); cout << endl; cout << "Result: " << "Print Original Test List" << endl; testBST.PrintIn(cout); cout << endl; } else{ switch (choice){ case 'h': case 'H': PrintMenu(); break; case '+': cin >> data; testBST.Insert(data); break; case '-': cin >> data; testBST.Remove(data); break; case '@': cout <<"Result:"; temp = testBST.AtCursor(); if (temp) cout << temp->GetData() << endl; else cout << "NULL POINTER" << endl; break; case '<': testBST.GoToBeginning(); break; case '>': testBST.GoToEnd(); break; case 'n': case 'N': testBST.GoToNext(); break; case 'p': case 'P': testBST.GoToPrev(); break; case 'c': case 'C': testBST.ClearList(); break; case 'e': case 'E': if (testBST.Empty()) cout <<"Result:" << "List Is Empty" << endl; else cout <<"Result:" << "List is Not Empty" << endl; break; case '#': //assign list testAssign = testBST; testAssign.Insert(-100000); cout << "Modify New List" << endl; testAssign.PrintIn(cout); cout << endl; cout << "Old List should not be affected" << endl; testBST.PrintIn(cout); cout << endl; testAssign.~BST(); cout << "Destroy New List" << endl; cout << "Old List should not be affected" << endl; testBST.PrintIn(cout); cout << endl; break; case '?': cin >> data; if (testBST.Find(data) != NULL) cout << "Result:" << data << "\tfound" << endl; else cout << "Result:" << data << "\tnot found" << endl; break; case 'i': case 'I': cout << "Print INORDER" << endl; testBST.PrintIn(cout); cout << endl; break; case 'r': case 'R': cout << "Print PREORDER" << endl; testBST.PrintPre(cout); cout << endl; break; case 'o': case 'O': cout << "Print POSTORDER" << endl; testBST.PrintPost(cout); cout << endl; break; default: cout << "INVALID CHOICE, Choose Again" << endl; } } testBST.PrintIn(cout); cout << endl; cout << "-->"; cin >> choice; } return 0; }
int main() { BST testBST; cout << "inserting 20\n"; testBST.Insert(20); cout << "inserting 15\n"; testBST.Insert(15); cout << "inserting 30\n"; testBST.Insert(30); cout << "inserting 5\n"; testBST.Insert(5); cout << "inserting 18\n"; testBST.Insert(18); cout << "inserting 40\n"; testBST.Insert(40); cout << "inserting 25\n"; testBST.Insert(25); cout << "calling PrintIn\n"; testBST.PrintIn(cout); cout << "calling PrintPost\n"; testBST.PrintPost(cout); cout << "calling PrintPre\n"; testBST.PrintPre(cout); cout << "calling Find(4)\n"; BNode * found = testBST.Find(4); cout << "found " << (*found).GetData() << endl; testBST.ClearList(); cout << "Cleared list, is it empty? " << testBST.Empty() << endl; testBST.Insert(5); testBST.Insert(6); cout << "Should return 5? " << testBST.getParent(testBST.Find(6))->GetData() << endl; testBST.PrintIn(cout); // test Remove with zero children testBST.Remove(6); cout << "Removed 6\n"; testBST.PrintIn(cout); testBST.Remove(5); cout << "Removed 5\n"; testBST.PrintIn(cout); cout << "clearing List for further tests\n"; testBST.ClearList(); testBST.Insert(5); testBST.Insert(6); testBST.Insert(7); testBST.PrintIn(cout); // test Remove with one child testBST.Remove(6); cout << "Removed 6\n"; testBST.PrintIn(cout); cout << "5 should now link to 7\n"; // test remove with two children cout << "Clearing list\n"; testBST.ClearList(); testBST.Insert(20); testBST.Insert(15); testBST.Insert(30); testBST.Insert(5); testBST.Insert(18); testBST.Insert(40); testBST.Insert(25); cout << "Tree is now:\n"; testBST.PrintIn(cout); cout << "Removing 30\n"; testBST.Remove(30); }