예제 #1
0
tipoNo* balanceamentoCaso3(tipoNo* raiz, tipoNo* n){
    if(verificaCor(noTio(n)) == RUB){
        n->noPai->cor = NEG;
        noTio(n)->cor = NEG;
        noAvo(n)->cor = RUB;
        return balanceamentoCaso1(raiz, noAvo(n));
    }

    else{
        return balanceamentoCaso4(raiz, n);
    }
}
예제 #2
0
NO* balanceamentoCaso3(NO* raiz, NO* n) {
    if(verificaCor(noTio(n)) == RUB) { /*tem pai vermelho e tio vermelho, troca as cores*/
        n->pai->cor = NEG; /*Trocando a cor do pai, já que quando insere com vermelho, o pai nao pode ser também.*/
        noTio(n)->cor = NEG; /*Trocando a cor do tio*/
        noAvo(n)->cor = RUB;/*Trocando a cor do avô, para assim ficar: V, P, V*/
        return balanceamentoCaso1(raiz, noAvo(n));/*Caso o noAvo ja seja a raiz, entao nao pode ficar vermelha como
                                                deixei, vai cair no caso1 para deixar a raiz preta e retornar raiz.*/
    }

    else {
        return balanceamentoCaso4(raiz, n);
    }
}