/** Binary Search Tree / map * * Dale Haverstock * 2002-04 */ #include "bst.h" #include #include #include #include using std::cin; using std::cerr; using std::cout; using std::pair; using std::string; using std::vector; void test_insert(BST&); void test_min (BST&); void test_delete(BST&); void test_find(BST&); void test_empty(BST&); void test_size(BST&); void test_iterator(BST&); void test_getNode(BST&); int main() { BST bst; bool more = true; while ( more ) { cout << "Enter (M for choices): "; char c; cin >> c; switch (c) { case 'i': test_insert(bst); break; case 'm': test_min(bst); break; case 'd': test_delete(bst); break; case 'f': test_find(bst); break; case 'e': test_empty(bst); break; case 's': test_size(bst); break; case 'g': test_getNode(bst); break; case 'I': test_iterator(bst); break; case 'z': bst.showTree1(); break; case 'Z': bst.showTree2(); break; case 'q': more = false; break; case 'M': cout << "Enter i, m, d, f, e, g, s, ,I, z, Z, q\n " << "(insert, min, delete, find, " << " empty, getNode, size, iterator, show, show2, quit)\n"; break; default : cerr << "Bad choice: " << c << '\n'; } } } void test_insert(BST& bst) { KeyType key; ValueType value; cout << "Enter a key and a value: "; cin >> key >> value; BSTnode& n = bst.insert(key, value); } void test_min(BST& bst) { if ( ! bst.empty() ) { BSTnode n = bst.min(); cout << n << '\n'; } else cout << "empty tree\n"; } void test_delete(BST& bst) { KeyType key; ValueType value; cout << "Enter key for delete: "; cin >> key; bst.delete_node(key); } void test_find(BST& bst) { KeyType key; ValueType value; cout << "Enter key for find: "; cin >> key; BSTnode* n = bst.find(key); if (n) cout << "Key/Value = " << n->_item.first << '/' << n->_item.second << '\n'; else cout << "not found\n"; } void test_getNode(BST& bst) { KeyType key; ValueType value; cout << "Enter key for find: "; cin >> key; BSTnode n = bst.getNode(key); cout << "Key/Value = " << n._item.first << '/' << n._item.second << '\n'; } void test_empty(BST& bst) { cout << "Empty = " << bst.empty() << '\n'; } void test_size(BST& bst) { cout << "Size = " << bst.size() << '\n'; } void test_iterator(BST& bst) { cout << "Testing iterator: "; for (BST::iterator it = bst.begin(); it != bst.end(); ++it) cout << *it << " "; cout << "\n"; }