tipoNo* balanceamentoCaso4(tipoNo* raiz, tipoNo* n){ if(n == n->noPai->noDireito && n->noPai == noAvo(n)->noEsquerdo){ raiz = rotacaoEsquerda(raiz, n->noPai); n = n->noEsquerdo; } else if(n == n->noPai->noEsquerdo && n->noPai == noAvo(n)->noDireito){ raiz = rotacaoDireita(raiz, n->noPai); n = n->noDireito; } return balanceamentoCaso5(raiz, n); }
NO* balanceamentoCaso4(NO* raiz, NO* n) { if(n == n->pai->direita && n->pai == noAvo(n)->esquerda) { /*se ele tiver no lado direito e o pai lado esquerdo*/ /* (4) (4) (3) / / / \ (2) => (3)no => (2) (4) \ / (3)no (2) */ raiz = rotacaoEsquerda(raiz, n->pai); n = n->esquerda; } /* (4) (4) (5) \ \ / \ (6) => (5) => (4) (6) / \ (5)no (6) */ else if(n == n->pai->esquerda && n->pai == noAvo(n)->direita) { raiz = rotacaoDireita(raiz, n->pai); n = n->direita; } return balanceamentoCaso5(raiz, n); }