int bstSort(std::vector<int> numVec) { BinarySearchTree* bst = new BinarySearchTree(); for(std::vector<int>::iterator it = numVec.begin(); it != numVec.end(); ++it) bst->insert(new Node(*it)); int size; int index; numVec.clear(); bst->inorder(numVec); size = numVec.size(); index = (size - 1)/2; bst->empty(); delete bst; if(size % 2 == 0) { int mean = (numVec.at(index) + numVec.at(index + 1)/2); return mean; } int mean = numVec.at(index); return mean; }
int main() { BinarySearchTree<int> BST; BST.insert(6); BST.insert(5); BST.insert(7); BST.inorder(); }
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; }
void assignLeaf(int value) { ptrBST = new BinarySearchTree(); ptrBST -> buildBST(value); if(DEBUG) cout<<"Inorder of BST at " << value << endl; if(DEBUG) ptrBST->inorder(); segVertex.push_back(value); }