Implemente uma classe Dicionario de elementos chave-valor formados por textos (strings), em C++, respeitando o seguinte:
#ifndef T1_DICIONARIO_ABB_H
#define T1_DICIONARIO_ABB_H
#include <string>
class DicionarioAbb
{
public:
//Cria um dicionario vazio
DicionarioAbb();
//Cria um dicionario com um primeiro elemento
DicionarioAbb(const std::string &chave, const std::string &valor);
//Cria um dicionario a partir de outro
DicionarioAbb(const DicionarioAbb& orig);
//Destroi o dicionario
virtual ~DicionarioAbb();
//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 mostraAbb();
//Retorna a altura da arvore que armazena o dicionario
int altura();
private:
struct AbbNo
{
std::string _chave;
std::string _valor;
AbbNo* _pai; // no pai
AbbNo* _esq; // sub-arvore a esquerda
AbbNo* _dir; // sub-arvore da direita
};
AbbNo* _raiz;
/* Funcoes e membros privados que julgar necessarios */
};
#endif // T1_DICIONARIO_ABB_H