Exemplo n.º 1
0
int
main()
{
	struct searchTree * t = initTree();

   
	struct searchTree *root = t = treeInsert(t , 3);
	treeInsert(t , 8);
	struct searchTree * x = treeInsert(t , 4);
	struct searchTree * y = treeInsert(t , 14);
	treeInsert(t , 9);
	treeInsert(t , 2);
	treeInsert(t , 0);

	treeWalk(t);
	treeDelete(x);
	treeWalk(root);
	treeDelete(y);
	treeWalk(root);

	printf("\nmax = %d min = %d \n", treeMax(t) -> k, treeMin(t) -> k);
	
	if(treeSearch(t, 3) != NULL)
		printf("found\n");
	
	printf("%d\n",t  -> k); 
	t = treeSuccessor(t);
	printf("%d\n",t  -> k); 
	t = treePredecessor(t);
	printf("%d\n",t  -> k); 
}
Exemplo n.º 2
0
void Foam::binaryTree<CompType, ThermoType>::balance()
{
    scalarField mean(chemistry_.nEqns(),0.0);

    //1) walk through the entire tree by starting with the tree's most left
    // chemPoint
    chP* x = treeMin();
    List<chP*> chemPoints(size_);
    label chPi=0;
    //2) compute the mean composition
    while (x != nullptr)
    {
        const scalarField& phij = x->phi();
        mean += phij;
        chemPoints[chPi++] = x;
        x = treeSuccessor(x);
    }
    mean /= size_;

    //3) compute the variance for each space direction
    List<scalar> variance(chemistry_.nEqns(),0.0);
    forAll(chemPoints, j)
    {
        const scalarField& phij = chemPoints[j]->phi();
        forAll(variance, vi)
        {
            variance[vi] += sqr(phij[vi]-mean[vi]);
        }
    }
void HashTable::deleteMovie(std::string title) {
    int deleteMovie_Counter = 0;
    MovieNode *node = root;
    while (node != NULL) {
        if ((node-> title).compare(title) > 0) {
            node = node-> leftChild;
        }
        else if ((node-> title).compare(title) < 0) {
            node = node-> rightChild;
        }
        else {
            if (node-> leftChild == NULL && node-> rightChild == NULL) {
                if (node-> parent-> leftChild == node) {
                    node-> parent-> leftChild = NULL;
                }
                else {
                    node-> parent-> rightChild = NULL;
                }
                delete node;
            }
            else if ((node-> leftChild != NULL && node-> rightChild == NULL) || (node-> leftChild == NULL && node-> rightChild != NULL)) {
                if (node-> leftChild != NULL && node-> rightChild == NULL) {
                    if (node-> parent-> leftChild == node) {
                        MovieNode *tmp= node-> leftChild;
                        node-> parent-> leftChild = tmp;
                        tmp-> parent = node-> parent;
                        delete node;
                    }
                    else {
                        MovieNode *tmp= node-> leftChild;
                        node-> parent-> rightChild = tmp;
                        tmp-> parent = node-> parent;
                        delete node;
                    }
                }
                else {
                    if (node-> parent-> rightChild == node) {
                        MovieNode *tmp= node-> rightChild;
                        node-> parent-> rightChild = tmp;
                        tmp-> parent = node-> parent;
                        delete node;
                    }
                    else {
                        MovieNode *tmp= node-> rightChild;
                        node-> parent-> leftChild = tmp;
                        tmp-> parent = node-> parent;
                        delete node;
                    }
                }
            }
            else {
                MovieNode *minimum = node-> rightChild;
                minimum = treeMin(minimum);
                if (node-> parent-> leftChild == node) {
                    if (minimum -> parent == node) {
                        node-> parent-> leftChild = minimum;
                        minimum -> parent = node-> parent;
                        node-> leftChild -> parent = minimum;
                        minimum -> leftChild = node-> leftChild;
                        delete node;
                    }
                    else {
                        minimum -> parent-> leftChild = minimum -> rightChild;
                        minimum -> parent = node-> parent;
                        minimum -> rightChild -> parent = minimum -> parent;
                        node-> parent-> leftChild = minimum;
                        minimum -> leftChild = node-> leftChild;
                        minimum -> rightChild = node-> rightChild;
                        node-> rightChild -> parent = minimum;
                        node-> leftChild -> parent = minimum;
                        delete node;
                    }
                }
                else {
                    if (minimum -> parent == node) {
                        node-> parent-> rightChild = minimum;
                        minimum -> parent = node-> parent;
                        node-> leftChild -> parent = minimum;
                        minimum -> leftChild = node-> leftChild;
                        delete node;
                    }
                    else {
                        minimum -> parent-> leftChild = minimum -> rightChild;
                        minimum -> parent = node-> parent;
                        minimum -> rightChild -> parent = minimum -> parent;
                        node-> parent-> rightChild = minimum;
                        minimum -> leftChild = node-> leftChild;
                        minimum -> rightChild = node-> rightChild;
                        node-> rightChild -> parent = minimum;
                        node-> leftChild -> parent = minimum;
                        delete node;
                    }
                }
            }

            deleteMovie_Counter++;
            break;
        }
    }
    if (deleteMovie_Counter == 0) {
        std::cout << "Movie not found." << std::endl;
    }
}
Exemplo n.º 4
0
  _size = 0;
  _modCount++;
}

//virtual 
RObject 
TreeMap::clone(sys::Allocator* alc)
{
  return new (alc) TreeMap(RSortedMap(const_cast<TreeMap*>(this)));
}

//virtual 
bool 
TreeMap::containsValue(IN(RObject) val)
{
  RRedBlackNode nod = treeMin(_root); 
  RObject curVal;
  while (nod != nilNode()) {
    curVal = nod->getValue();
    if (((val == Nil) && (curVal == Nil)) || val->equals(curVal))
      return true;
    nod = treeSuccessor(nod);
  }
  return false;
}

//virtual 
RSet 
TreeMap::entrySet()
{
  return new TreeMapSet(this, this, Entries);