Universidade Federal de Pernambuco 
Centro de Informática


IF096 - Algoritmos e Estruturas de Dados
dezembro a março de 2002

Lista
2
Entrega: Sexta-feira, dia  15 de fevereiro de 2002

1. Escrever um procedimento para inserção em árvore AVL (naturalmente isso inclui a rotação simples e a dupla), e outro para impressão dos filhos à esquerda e à direita de um dado nó.

IMPORTANTE:
Observe que há diversos casos de inserção que não requerem rotação.
No caso de ser necessário fazer rotação, há quatro situações diferentes para considerar:
Se A é o nó crítico, B é o seu filho à esquerda e C seu filho à direita, então:

Balance de A Lado Inserção Sub_árvore do Filho Tipo Rotação
-1  esquerda de A  esquerda de B SIMPLES 
+1  direita de A  direita de C SIMPLES 
-1  esquerda de A  direita de B DUPLA 
+1  direita de A  esquerda de C DUPLA 

Veja os detalhes das rotações em : http://www.cin.ufpe.br/~if096/2001.2/docs/ArvoresAVL.pps 

IMPORTANTE:
A função de inserção deve ser eficiente!!!
O seu programa só deve visitar cada nó da árvore a partir do pai no máximo duas vezes, uma para cada um dos módulos acima.
Assim, as informações devem ser ``carregadas'' enquanto estão disponíveis, obedecendo ao fluxo da informação.


[Última alteração em 30/01/2002 por katia.]