INF1010 - Árvores AVL - Inserção

Entrega: até sábado, 6/4

Usando árvores AVL, implemente novamente o módulo mapa.c com a interface igual à já implementada em lab anterior:

typedef struct smapa Mapa;

Mapa* cria (void);
Mapa* insere (Mapa* m, int chave, int novodado);
int busca (Mapa *m, int chave);
void destroi (Mapa *m);

Os arquivos arvore.h e mapa.h contêm as interfaces. O arquivo mapa.c contém um esboço da implementação. Esse esboço já contém o código necessário para tratar um dos casos de desbalanceamento. A operação mostra, como antes, pode ser usada para ajuda a acompanhar sua implementação. Ela agora mostra o fator de balanceamento além da chave.

Use o programa teste.c para testar sua implementação.

  1. O esqueleto de mapa.c já tem um esboço da função e contém os passos necessários para um dos subcasos de ajuste, o caso "direita-direita". O código dado é suficiente para criar uma árvore AVL correta no caso de inserção em ordem crescente. Use o programa de teste para verificar árvores geradas dessa forma.
  2. Implemente a função insere2 e as funções auxiliares necessárias (ajuste e rotaciona) para os demais casos. (Essa tarefa é longa e complexa. Uma sugestão é fazer primeiro o "simétrico" da situação já implementada, tratando a inserção em ordem estritamente decrescente, para depois tratar o caso das rotações duplas.)

Entregue seus resultados no ead!