----------------------------------------------------------------------------------------------------
Código
#include <iostream>
using namespace std;
struct Nodo
{
int valor;
char letra;
Nodo *pMenor;
Nodo *pMayor;
};
class Arbol
{
private:
Nodo *pOrigen;
public:
Arbol(int num, char c)
{ pOrigen->pMayor = NULL;
pOrigen->pMenor = NULL;
pOrigen->valor = num;
pOrigen->letra = c;
}
void Add(int num, char c)
{
Nodo *pRecorre = pOrigen;
while(true)
{
if(num > pRecorre->valor)
{
if(pRecorre->pMayor == NULL)
{
Nodo *pNuevoNodo = new Nodo;
pNuevoNodo->valor = num;
pNuevoNodo->letra = c;
pNuevoNodo->pMayor = NULL;
pNuevoNodo->pMenor = NULL;
pRecorre->pMayor = pNuevoNodo;
break;
}
else
{
pRecorre = pRecorre->pMayor;
}
}
else if(num < pRecorre->valor)
{
if(pRecorre->pMenor == NULL)
{
Nodo *pNuevoNodo = new Nodo;
pNuevoNodo->valor = num;
pNuevoNodo->letra = c;
pNuevoNodo->pMayor = NULL;
pNuevoNodo->pMenor = NULL;
pRecorre->pMenor = pNuevoNodo;
break;
}
else
{
pRecorre = pRecorre->pMenor;
}
}
else
{
pRecorre->letra = c;
break;
}
}
}
char Find(const int num)
{
Nodo *pRecorre = pOrigen;
while(true)
{
if(pRecorre->valor == num)
{
return pRecorre->letra;
}
else if(num > pRecorre->valor)
{
if(pRecorre->pMayor == NULL) { return '&'; }
else
{
pRecorre = pRecorre->pMayor;
}
}
else if(num < pRecorre->valor)
{
if(pRecorre->pMenor == NULL) { return '&'; }
else
{
pRecorre = pRecorre->pMenor;
}
}
}
}
};
int main()
{
Arbol miArbol(0, 'g');
miArbol.Add(5, 'f');
miArbol.Add(6, 'f');
miArbol.Add(7, 'f');
miArbol.Add(8, 'f');
miArbol.Add(9, 'D');
char c = 'A';
c = miArbol.Find(9);
cout << "La letra es: " << c << endl;
return 0;
}










Autor


En línea

, acuerdate de crear un destructor para liberar la memoria dinamicamente asignada.