Neste laboratório, vamos tratar da implementação da inserção em árvores rubro-negras. Consulte os slides disponíveis sobre o assunto para ver a descrição de como caso deve ser tratado. Utilize essa árvore rubro-negra online para testar manualmente as correções sugeridas pelos slides.
Pegue o arquivo mapa.c que tem um esboço da implementação, com árvores rubro-negras, de nossa velha interface mapa.h:
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); void debug_mostra_mapa (Mapa *m);
O programa teste.c tem um teste de inserção que deve funcionar com este esqueleto, apesar dos warnings. Ele funciona porque as inserções são sempre feitas à esquerda do nó mais à esquerda de toda a árvore, e este é o único caso que está sendo tratado em nosso esqueleto (chamado de caso LEFTRED, dentro da função corrigeEsq.