typedef struct Nodo
{
int Dato;
struct Nodo *Derecho,*Izquierdo;
}*TNodo;
class ArbolBinario
{
private:
TNodo raiz;
AnsiString Cadena;
public:
ArbolBinario();
~ArbolBinario();
void Crear(TNodo nodo,int dato);
void Preorden(TNodo nodo);
void PostOrden(TNodo nodo);
void InOrden(TNodo nodo);
void Operar(TNodo nodo);
AnsiString Mostrar();
TNodo GetRaiz();
};
ArbolBinario::ArbolBinario()
{
raiz = NULL;
Cadena = "";
}
ArbolBinario::~ArbolBinario()
{}
void ArbolBinario::Crear(TNodo nodo,int dato)
{
if (nodo==NULL)
{
nodo = new Nodo;
nodo->Dato = dato;
nodo->Derecho = NULL;
nodo->Izquierdo = NULL;
}
else
if (dato<nodo->Dato)
Crear(nodo->Derecho,dato);
else
if (dato>nodo->Dato)
Crear(nodo->Izquierdo,dato);
}
void ArbolBinario::Preorden(TNodo nodo)
{
if (nodo!=NULL)
{
Operar(nodo);
Preorden(nodo->Izquierdo);
Preorden(nodo->Derecho);
}
}
void ArbolBinario::PostOrden(TNodo nodo)
{
if (nodo!=NULL)
{
PostOrden(nodo->Izquierdo);
PostOrden(nodo->Derecho);
Operar(nodo);
}
}
void ArbolBinario::InOrden(TNodo nodo)
{
if (nodo!=NULL)
{
InOrden(nodo->Izquierdo);
Operar(nodo);
InOrden(nodo->Derecho);
}
}
void ArbolBinario::Operar(TNodo nodo)
{
Cadena+=(AnsiString)nodo->Dato;
}
AnsiString ArbolBinario::Mostrar()
{
return (Cadena);
}
TNodo ArbolBinario::GetRaiz()
{
return (raiz);
}