Arbol Binario c++ con estructuras, tree binary struct c++

un arbol binario es una estructura de datos, «en la cual cada nodo siempre tiene un hijo izquierdo y un hijo derecho. No pueden tener más de dos hijos (de ahí el nombre «binario»). Si algún hijo tiene como referencia a null, es decir que no almacena ningún dato, entonces este es llamado un nodo externo.» wikipedia.

En fin esta implementacion es un simple hecho en c++ con estructuras, en este caso tiene

void mostrarInOrden(NodoArbol *hijo);  con esta funcion mostramos el nodo raiz ya que eso usaremos para mostrarlo, en la proxima ejemplo les mostrare el uso con clases en la cual se ve la importancia del uso de clases.

#include <iostream>
using namespace std;

struct NodoArbol
{
int dato;
NodoArbol *izquierdo;
NodoArbol *derecho;
};

NodoArbol *raiz;
NodoArbol *auxiliar;

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


//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
void mostrarInOrden(NodoArbol *hijo)
{
if (hijo!=NULL)
{
mostrarInOrden(hijo->izquierdo);
cout << hijo->dato << "\n";
mostrarInOrden(hijo->derecho);

}
}


int main()
{
inicializarArbol();

int datoLeido=0;

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

while(datoLeido != 0)
{
agregarNodo(datoLeido);

cin >> datoLeido;
}

cout << "\n in orden:\n";
mostrarInOrden(raiz);
cin.get();cin.get();
return 0;
}
Esta entrada fue publicada en Uncategorized. Guarda el enlace permanente.