Foros > C++: ARBOLES EN C++

  1. Lina

    Mensajes [1] - Enviado el Lunes 18 de Agosto de 2008 a las 22:51hs

    Tengo un trabajo en C++ que requiere usar arboles en C... pero no entiendo muy bien asi q necesito ayuda!!!

    Se tiene que sistematizar las cuentas bancarias de un banco separadas en dos ?rboles binarios ordenados en un ?rbol binario ordenado se gurdar?n las cuentas en colones y en el otro la cuentas en dolares... cada uno d los ?rboles debe estar ordenado por el n?mero de cuenta. de cada cuenta se guarda el numero de cuenta, si es dolares o colones, el saldo y el nombre del cliente. Se requiere poder crear los dos arboles, insertar de manera ordenada cuentas a los dos arboles, buscar una cuenta en uno de los arboles dado su numero, buscar una cuenta en uno de los arboles por el nombre del cliente, cambiar el saldo de una cuenta en uno d los arboles por el numero de cuenta y los arboles se tienen q imprimir en inorden. Se debe verificar todos los datos con la libreria assert y tener parametros por referencia, metods constantes y metodos inline y aparte un menu donde se puedan manejar con facilidad las opciones antes mencionadas....

    si alguien m puede dar aunque sea una idea se lo agradezco demasiado de antemano!!! y si m hacen el codigo d una vez mucho mejor!!!! MUCHAS GRACIAS!!!!

  2. deividsito

    Mensajes [10] - Enviado el Jueves 04 de Setiembre de 2008 a las 13:17hs

    buenas yo ya trabaj? con arboles binarios en c++ con estructuras no con clases, y con arboles binarios de busqueda, avl, B en pascal, tengo el codigo de los binarios en c++ pero para q es es eso es profesional? o q onda?
    bueno ahi encontr? el c?digo
    //Funcion o Opreciones De ABB
    #include
    #include "conio.h"
    #include "arbol.h"

    void InicializarABB(pArbol &A)
    {
    A=NULL;
    }

    //MOVIMIENTO EN ABB
    void MostrarDato(int Dato)
    {
    printf("
    %d",Dato);
    }

    void InOrden(pArbol &A)
    {
    if(A!=NULL)
    {
    InOrden(A->izq);
    MostrarDato(A->Dato);
    InOrden(A->der);
    }
    }

    void PreOrden(pArbol &A)
    {
    if(A!=NULL)
    {
    MostrarDato(A->Dato);
    PreOrden(A->izq);
    PreOrden(A->der);
    }
    }

    void PosOrden(pArbol &A)
    {
    if(A!=NULL)
    {
    PosOrden(A->izq);
    PosOrden(A->der);
    MostrarDato(A->Dato);
    }
    }

    //INFORMACION DE ABB
    int ArbolVacio(pArbol &A)
    {
    if(A==NULL)
    return 1;
    else
    return 0;
    }

    int EsHoja(pArbol &A)
    {
    if((A->der==NULL)&&(A->izq==NULL))
    return 1;
    else
    return 0;
    }

    void NumerosDeNodos(pArbol &A, int &x)
    {
    if(A!=NULL)
    {
    x++;
    NumerosDeNodos(A->izq,x);
    NumerosDeNodos(A->der,x);
    }
    }

    int CantidadDeNodos(pArbol &A)
    {
    int Cantidad=0;
    if(A!=NULL)
    NumerosDeNodos(A,Cantidad);
    return Cantidad;
    }

    int AlturaDeUnNodo(pArbol &A, int x)
    {
    int Altura=0;
    Nodo Aux=A;
    while(Aux!=NULL)
    {
    if(x==Aux->Dato)
    return Altura;
    else
    {
    Altura++;
    if(x>Aux->Dato)
    Aux=Aux->der;
    else
    Aux=Aux->izq;
    }
    }
    if(Altura==0)
    return 1;
    return Altura;
    }

    void VaciarABB(pArbol &A)
    {
    if(A!=NULL)
    {
    VaciarABB(A->izq);
    VaciarABB(A->der);
    delete(A);
    }
    A=NULL;
    }

    int AlturaArbol(pArbol &A)
    {
    int AltDer=0,AltIzq=0;
    if(A==NULL)
    return -1;
    else
    {
    AltIzq=AlturaArbol(A->izq);
    AltDer=AlturaArbol(A->der);
    if(AltIzq>AltDer)
    AltIzq=AltIzq+1;
    else
    AltIzq=AltDer+1;

    }
    return AltIzq;
    }

    //OPRECIONES EN ABB
    int BuscarMenorEnABB(pArbol &A)
    {
    Nodo Aux=A;
    if(Aux!=NULL)
    {
    while(Aux->izq!=NULL)
    Aux=Aux->izq;
    }
    return (Aux->Dato);
    }

    int BuscarMayorEnABB(pArbol &A)
    {
    Nodo Aux=A;
    if(Aux!=NULL)
    {
    while(Aux->der!=NULL)
    Aux=Aux->der;
    }
    return (Aux->Dato);
    }

    int BuscarElementoEnABB(pArbol &A, int x) // 1: Encontado, 0: No Existe
    {
    Nodo Aux=A;
    if(Aux!=NULL)
    {
    if(Aux->Dato==x)
    return 1;
    else
    {
    if(Aux->Dato>x)
    BuscarElementoEnABB(Aux->izq,x);
    if(Aux->Dato BuscarElementoEnABB(Aux->der,x);
    }
    }
    return 0;
    }

    int InsertarNodoEnArbol(pArbol &A, int x)
    {
    int bandera=0;
    pArbol Aux,Padre;
    Aux=A;
    Padre=NULL;
    while((Aux!=NULL)&&(Aux->Dato!=x))
    {
    Padre=Aux;
    if(Aux->Dato>x)
    Aux=Aux->izq;
    else
    if(Aux->Dato Aux=Aux->der;
    }
    if(Aux==NULL)
    {
    Aux=new Arbol;
    Aux->Dato=x;
    Aux->der=NULL;
    Aux->izq=NULL;
    if(Padre!=NULL)
    {
    if(Padre->Dato>x)
    Padre->izq=Aux;
    else
    Padre->der=Aux;
    bandera=1;
    }
    else
    {
    A=Aux;
    bandera=1;
    }
    }
    return bandera;
    }

    int EliminarNodoEnABB(pArbol &A, int x)
    {
    pArbol Aux;
    if(A!=NULL)
    {
    Aux=A;
    if(Aux->Dato==x)
    {
    if(EsHoja(Aux))//Es hoja
    {
    delete(Aux);
    A=NULL;
    return(1);
    }
    else
    {
    if(A->izq!=NULL)
    {
    Aux=Aux->izq;
    while(Aux->der!=NULL)
    Aux=Aux->der;
    A->Dato=Aux->Dato;
    Aux->Dato=x;
    EliminarNodoEnABB(A->izq,x);
    }
    else
    {
    Aux=Aux->der;
    while(Aux->izq!=NULL)
    Aux=Aux->izq;
    A->Dato=Aux->Dato;
    Aux->Dato=x;
    EliminarNodoEnABB(A->der,x);

    }
    }
    }
    else
    if(A->Dato>x)
    EliminarNodoEnABB(A->izq,x);
    else
    EliminarNodoEnABB(A->der,x);
    }
    else
    return 0;
    }

    int PodaABB(pArbol &A, int x)
    {
    pArbol Aux;
    int Bandera;
    if(A!=NULL)
    {
    Aux=A;
    if(Aux->Dato==x)
    {
    Aux->der=NULL;
    Aux->izq=NULL;
    Bandera=1;
    }
    else
    {
    if(Aux->Dato>x)
    PodaABB(Aux->izq,x);

    else
    {
    if(Aux->Dato<=x)
    PodaABB(Aux->der,x);

    }
    }

    }
    else
    Bandera=0;
    return Bandera;
    }

    tom? el .h tambi?n

    struct Arbol{
    int Dato;
    Arbol *izq;
    Arbol *der;
    };

    typedef Arbol* pArbol;
    typedef Arbol* Nodo;


    void InicializarABB(pArbol &A);
    void InOrden(pArbol &A);
    void PreOrden(pArbol &A);
    void PosOrden(pArbol &A);
    int ArbolVacio(pArbol &A);
    int EsHoja(pArbol &A);
    void NumerosDeNodos(pArbol &A, int &x);
    int CantidadDeNodos(pArbol &A);
    int AlturaDeUnNodo(pArbol &A, int x);
    void VaciarABB(pArbol &A);
    int AlturaArbol(pArbol &A);
    int BuscarMenorEnABB(pArbol &A);
    int BuscarMayorEnABB(pArbol &A);
    int BuscarElementoEnABB(pArbol &A, int x);
    int InsertarNodoEnArbol(pArbol &A, int x);
    int EliminarNodoEnABB(pArbol &A, int x);
    int PodaABB(pArbol &A, int x);





    avisame si te sirvi? :D
    la librer?a assert nunca la us? q tal es buena?
    y para implementarlos como clases hacelos vos q sale facil es algo as?
    class ABB {
    private:
    ?elto * e;
    ?ABB *hizq, *hder;
    public:
    ?ABB();
    ?ABB(elto * e);
    ?void InOrden();
    ?void PreOrden();
    ?void PosOrden();
    ?int ArbolVacio();
    ?int EsHoja();
    ?int CantidadDeNodos();
    ?int AlturaDeUnNodo(int x);
    ?void VaciarABB();
    ?int AlturaArbol();
    ?int BuscarMenorEnABB();
    ?int BuscarMayorEnABB();
    ?int BuscarElementoEnABB(int nro_cuenta);
    ?int InsertarNodoEnArbol(elto Cuenta);
    ?int EliminarNodoEnABB(int nro_cuanta);
    };

    esa es la idea sale facil el paso a clases cualquier cosa avisame no es dificil si hiciste alguna clase lista o algo por el estilo
    bueno nos vemos lina


responder

Para poder responder a este tema tenes que ingresar. Si no tenes una cuenta podes registrarse gratis..

publicidad

API DE FACEBOOK
GOOGLE CALENDAR API
GOOGLE MAPS API