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); }
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; } }
_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);