Primeiro
Árvore AVL é um estilo de Árovre binária de busca, só que ela trabalha com um método otimizado para fazer isso. A Sigla AVL vem de seu criadores, Adelson Velsky e Landis.
Árvore AVL é uma árvore binária de busca auto-balanceada onde as alturas das duas sub-árvore a partir de cada nó difere no máximo uma unidade, isso diz que no máximo as Sub-árvores terão um nível de diferença. As operações realizadas nessa árvore é de complexidade O(log n).
Nesse estilo de árvore, toda operação de inserção e remoção que é realizada, é necessário fazer uma analise para conferir se ela não precisa reconfigurar seus níveis.
Rotações
Entendendo as Rotações
Generalizando:
Rotação à Direita
Seja Y o filho Á esquerda de X
Torne X o filho à direita de Y
Torne o filho à direita de Y o filho a esquerda de X
Rotação à Esquerda
Seja Y o filho à direita de X
Torne o X filho à esquerda de Y
Torne o filho à esquerda de Y o filho à direita de X
Essas rotações funcionam em alguns casos, mas nem sempre é necessário apenas uma rotação para balancear a árvore, vamos entender mais um tipo de rotação.
Rotação Dupla
Se um nó estiver desbalanceado e seu filho estiver inclinado no sentido inverso ao pai, teremos a ocorrência de uma rotação dupla
Na verdade, trata-se apenas de duas rotações simples seguidas.
Se um nó estiver desbalanceado e seu filho estiver inclinado no sentido inverso ao pai, teremos a ocorrência de uma rotação dupla.
Inserção
A inserção de elementos na sua árvore AVL, ocorre do mesmo modo que ocorre na árvore binária, porém, quando necessário a árvore AVL deve realizar o balanceamento para a árvore segui seu padrão.
As Rotações deve seguir os padrões listados acima sempre que necessário.
Remoção
Remover um nó em uma árvore AVL, consistem em remover o nó diretamente se o nó for uma Folha, e verificar se necessita um balanceamento na árvore, caso contrário, deve remover o nó e troca ele por sua maior folha, após fazer a troca deve-se