codigo de arbol con clases.


#include <iostream>
using namespace std;

class NodoArbol
{
public:
int dato;
NodoArbol *izquierdo;
NodoArbol *derecho;
};

class Arbol{

public:

Arbol()
{
inicializarArbol();
}

void mostarorden()
{
InOrden(raiz);
}
//al nodo enviado en hijo agregarle como hijo el valor enviado en valorNodo
void agregarNodoHijo(NodoArbol *hijo, int valorNodo)
{
//si tiene que ir en el hijo izquierdo
if(hijo->dato > valorNodo)
{
if(hijo->izquierdo==NULL)
{

hijo->izquierdo= new NodoArbol;
hijo->izquierdo->dato=valorNodo;
hijo->izquierdo->izquierdo=NULL;
hijo->izquierdo->derecho=NULL;
}
else
{
agregarNodoHijo(hijo->izquierdo, valorNodo);
}
}

//si tiene que ir en el hijo derecho
if (hijo->dato <=valorNodo)
{
if(hijo->derecho==NULL)
{
hijo->derecho = new NodoArbol;
hijo->derecho->dato=valorNodo;
hijo->derecho->izquierdo=NULL;
hijo->derecho->derecho=NULL;
}

else
{

agregarNodoHijo(hijo->derecho, valorNodo);
}
}


}


void agregarNodo(int valorNodo)
{

if (raiz==NULL)
{
raiz = new NodoArbol;
raiz->dato=valorNodo;
raiz->izquierdo=NULL;
raiz->derecho=NULL;
}

else
{
agregarNodoHijo(raiz,valorNodo);
}

}

//Lectura de Arbol
private:
NodoArbol *raiz;
NodoArbol *auxiliar;
void inicializarArbol();

void InOrden(NodoArbol *hijo);

};
void Arbol::inicializarArbol()
{
raiz=NULL;
auxiliar=NULL;

}

void Arbol::InOrden(NodoArbol *hijo)
{
if (hijo!=NULL)
{
InOrden(hijo->izquierdo);
cout << hijo->dato << "\n";
InOrden(hijo->derecho);

}

}
int main()
{
Arbol *miarbol = new Arbol();

int datoLeido=0;

cout << "Ingrese un numero (0 para salir)\n";
cin >> datoLeido;

while(datoLeido != 0)
{
miarbol->agregarNodo(datoLeido);
cin >> datoLeido;
}
cout << "\n in orden:\n";
miarbol->mostarorden();
delete miarbol;
cin.get();cin.get();
return 0;
}
Esta entrada fue publicada en Uncategorized. Guarda el enlace permanente.