Exercício 2
Considere o TAD rbt e a implementação dada na teórica (ficheiros:
tadrbt.h, tadrbt.c e rbtmain.c):
(Atenção que o código do ano passado tinha os filhos direito e esquerdo trocados...)
- (para fazer numa folha de papel)
Insira os seguintes valores numa rbt: 12 14 15 17 3 4 6 9 1 11;
pela ordem indicada.
Indique para cada inserção qual a rbt obtida.
- Implemente a operação altura_preta de uma rbt.
teste a sua função para diferentes rbts.
- Implemente a operação sucessor valor, que deve devolver o
sucessor do valor. (O sucessor é o nó com o valor mais baixo, de entre os nós com valores superiores ao nó com o valor em causa)
teste a sua função para diferentes rbts.
- Implemente a operação pesquisa_rbt valor, que deve retornar o nó com chave valor.
- Implemente a operação maximo_rbt, que deve retornar a maior chave.
- Implemente a operação minimo_rbt, que deve retornar a menor chave.
- Implemente a operação lista_ord_rbt, que deve listar os elementos por ordem crescente ou decrescente, de acordo com um parâmetro booleano passado à função.
- Implemente a operação é_rbt que dada uma struct rbt verifica se as 4 propriedades se verificam.
- Um nó ou é preto ou vermelho
- Uma folha (NIL) é preta.
- Se um nó é vermelho então os seus dois filhos são pretos
- Qualquer caminho de um nó a uma folha tem sempre o mesmo número de nós pretos.