Tengo un problema al tratar de insertar datos a un arbol binario, el codigo q estoy haciendo es el siguiente.
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);
}
No se q estoy haciendo mal, al momento de crear el nodo siempre le mando a la raiz para q comienze a realizar la busqueda desde hay, pero la raiz nunca cambia su valor y siempre sigue en NULL y por ende siempre, cada vez q ingreso un dato, ingresa de frente al if, pero a la hora de querer mostrarlo no lo imprime xq sigue siendo NULL. Alguien seria tan amable de explicarme en que estoy fallando?, gracias de antemano.