コード例 #1
0
ファイル: TRIE.CPP プロジェクト: dario-ramos/html_index
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;
		}
}
コード例 #2
0
 void RedBlackTree::insertar(int valor)
 {
     if(raiz==NULL)
    {
         raiz = new Node(valor,((screenWidth/2)-Node::radius),450);
         insercion_caso1(raiz);
    }else
    {
        insertarNodo(valor, raiz);
    }

 }
コード例 #3
0
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);
        }


    }





}