Implemente uma classe Dicionario de elementos chave-valor formados por textos (strings), em C++, respeitando o seguinte:
#ifndef T2_DICIONARIO_RBT_H
#define T2_DICIONARIO_RBT_H
#include <string>
class DicionarioRbt
{
public:
//Cria um dicionario vazio
DicionarioRbt();
//Cria um dicionario com um primeiro elemento
DicionarioRbt(const std::string& chave, const std::string& valor);
//Cria um dicionario a partir de outro
DicionarioRbt(const DicionarioRbt& orig);
//Destroi o dicionario
virtual ~DicionarioRbt();
//Insere um elemento no dicionario
void insere(const std::string& chave, const std::string& valor);
//Obtém o valor de um elemento, dada a sua chave
std::string obtemValor(const std::string& chave);
//Remove um elemento no dicionario, dada a sua chave
bool remove(const std::string& chave);
//Retorna o numero de elementos do conjunto
unsigned int tamanho();
//Exibe os elementos do dicionario na ordem lexografica das suas chaves
void mostra();
//Exibe a arvore que armazena o dicionario no formato
//( raiz (sub-arvore a esquerda) (sub arvore a direita) )
void mostraRbt();
//Retorna a altura da arvore que armazena o dicionario
int altura();
private:
enum Cor
{
VERMELHO,
PRETO
};
struct RbtNo
{
std::string _chave;
std::string _valor;
RbtNo* _pai; // no pai
RbtNo* _esq; // sub-arvore a esquerda
RbtNo* _dir; // sub-arvore da direita
Cor _cor;
};
RbtNo* _raiz;
/* Funcoes e membros privados que julgar necessarios */
};
#endif // T2_DICIONARIO_RBT_H