예제 #1
0
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;
}
예제 #2
0
int main()
{
   BinarySearchTree<int> BST;
   BST.insert(6);
   BST.insert(5);
   BST.insert(7);
   BST.inorder();
}
예제 #3
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;
}
예제 #4
0
  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);
  }