bool Trie::insertarTerminoRec(deque<NodoTrie*>& hijosActual, const string& term, int& posTerm, long int offset){ int pos = 0; NodoTrie* pNuevoNodo = insertarNodo(hijosActual, term[posTerm], pos, offset); posTerm++; if (posTerm == term.size() ) { if (pNuevoNodo != NULL){ pNuevoNodo->pHijos.push_front(NULL); ++(pNuevoNodo->ftd); hijosActual[pos]->offset = offset; return true; } else if (hijosActual.size() == 1 && hijosActual[0] == NULL || hijosActual[pos]->pHijos[0] == NULL){ ++(hijosActual[pos]->ftd); return false; }else{ hijosActual[pos]->pHijos.push_front(NULL); ++(hijosActual[pos]->ftd); hijosActual[pos]->offset = offset; return true; } } else if (pNuevoNodo == NULL) return insertarTerminoRec(hijosActual[pos]->pHijos, term, posTerm, offset); else{ colgar(hijosActual[pos], term, posTerm, offset); return true; } }
void RedBlackTree::insertar(int valor) { if(raiz==NULL) { raiz = new Node(valor,((screenWidth/2)-Node::radius),450); insercion_caso1(raiz); }else { insertarNodo(valor, raiz); } }
void RedBlackTree::insertarNodo(int valor ,Node *n) { if(valor< n->value) { if(n->izquierdo!=NULL) insertarNodo(valor, n->izquierdo); else{ n->izquierdo=new Node(valor,0,0); n->izquierdo->padre =n; insercion_caso2(n->izquierdo); } } else if(valor>=n->value) { if(n->derecho!=NULL) insertarNodo(valor, n->derecho); else{ n->derecho=new Node(valor,0,0); n->derecho->padre =n; insercion_caso2(n->derecho); } } }