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