BinarySearchTree* find(int value) { if (data == value) { return this; } else if (value < data && left != NULL) { return left->find(value); } else if (data < value && right != NULL) { return right->find(value); } else { return NULL; } }
/** * PURPOSE: Allows the user to search for their friends * PARAMETERS: tree - the binary search tree that will be searched */ void findFriends(const BinarySearchTree& tree) { cout << "Find Friends" << endl << endl; while (true) { cout << "Friend ID: " << flush; string friendId; getline(cin, friendId); const TreeNode* node = tree.find(friendId); if (node == 0) { cout << "Friend not found!" << endl; } else { const Friend* f = dynamic_cast<const Friend*>(node->element()); cout << "Friend found!" << endl << (*f) << endl; } cout << endl << "Find another friend? [Y/n] " << flush; string answer; getline(cin, answer); if (answer.length() > 0 && tolower(answer[0]) == 'n') { break; } } }
int main() { { BinarySearchTree<int> t; t.insert(8);t.insert(3);t.insert(10);t.insert(1); t.remove(1);t.remove(3); t.insert(6);t.insert(14);t.insert(4);t.insert(7);t.insert(13); assert( t.find(13)->val == 13); assert( t.findMax()->val == 14); assert( t.findMin()->val == 4); t.traverse(printNode); } { BinarySearchTree<int> t; t.insert(8);t.insert(3);t.insert(10);t.insert(1); t.insert(6);t.insert(14);t.insert(4);t.insert(7);t.insert(13); t.traverse(printNode); } return 0; }
int main() { BinarySearchTree bst; int n; cin >> n; while(n){ bst.insert(n); cin >> n; } bst.print(); cin >> n; cout << bst.find(n); return 0; }
bool test_bst() { BinarySearchTree<int> bst; int lim = 1024, i; srand(time(NULL)); for(i = 0; i < lim; i ++) { bst.insert(rand() % lim + 1); } if(bst.size() != lim)return false; int *sorted = bst.inorder(); for(i = 1; i < lim; i++ ) { if(sorted[i-1] > sorted[i]){return false;} } int n = sorted[rand() % (lim/2)]; if(!bst.find(n)) return false; //bst.remove(n); sorted = bst.inorder(); for(i = 1; i < bst.size(); i++ ) { if(sorted[i-1] > sorted[i]){return false;} } BinarySearchTree<int> bst2; bst2.insert(6); bst2.insert(3); bst2.insert(8); bst2.insert(2); bst2.insert(0); bst2.insert(10); bst2.insert(5); bst2.insert(1); bst2.insert(4); bst2.insert(7); bst2.insert(9); i = 0; while(bst.size()) { bst.remove(sorted[i++]); } return true; }
int main() { BinarySearchTree * bst = new BinarySearchTree(); bst->insert(50, 5.0); bst->insert(25, 2.5); bst->insert(75, 7.5); bst->insert(12, 1.2); bst->insert(37, 3.7); bst->insert(43, 4.3); bst->insert(30, 3.0); bst->insert(33, 3.3); bst->insert(87, 8.7); bst->insert(93, 9.3); bst->insert(97, 9.7); cout << "\n--- traversal method with recursion ---\n"; bst->traverse(1); bst->traverse(2); bst->traverse(3); cout << "\n--- traversal method without recursion ---\n"; bst->travNoRecur(1); bst->travNoRecur(2); bst->travNoRecur(3); int key; while(cin >> key) { Node * pNode = bst->find(key); if(pNode != NULL) { cout << "found node "; pNode->displayNode(); cout << endl; } else cout << "can't find node with key " << key << endl; } bst->destroy(); bst->traverse(2); return 0; }
int main() { int n, v; char cmd[32]; while (scanf("%d", &n) != EOF) { BinarySearchTree bst; for (int i = 0; i < n; ++i) { scanf("%s", cmd); if (!strcmp(cmd, "find")) { scanf("%d", &v); TreeNode *ptr = bst.find(v); if (!ptr) { puts("null"); } else { printf("%x : %d\n", (unsigned)ptr, ptr->v); } } else if (!strcmp(cmd, "findMin")) { TreeNode *mini = bst.findMin(); if (!mini) { puts("null"); } else { printf("%x : %d\n", (unsigned)mini, mini->v); } } else if (!strcmp(cmd, "findMax")) { TreeNode *maxi = bst.findMax(); if (!maxi) { puts("null"); } else { printf("%x : %d\n", (unsigned)maxi, maxi->v); } } else if (!strcmp(cmd, "insert")) { scanf("%d", &v); bst.insert(v); } else if (!strcmp(cmd, "remove")) { scanf("%d", &v); bst.remove(v); } else if (!strcmp(cmd, "show")) { bst.show(); } } } return 0; }