• Sábado 21 de Diciembre de 2024, 10:59

Autor Tema:  Re: Arboles Binarios en Visual Basic  (Leído 20522 veces)

Luis Hernández

  • Nuevo Miembro
  • *
  • Mensajes: 1
    • Ver Perfil
Re: Arboles Binarios en Visual Basic
« en: Jueves 24 de Abril de 2003, 17:14 »
0
Necesito implementar un arbol binario en visual basic , con sus tres recorridos y todo , pero el Ing. dice que tiene que ser dinámico , es decir con modulos clases y funciones y nodos , he preguntado sobre esto pero me dicen que el Visual Basic no maneja memoria dinámica y no hay como hacer , esto , pero el Ing. dice que si hay como y nos mandó de examen .
Si me pueden ayudar con un ejemplo o algo sobre esto por favor , auxilio .

Ayúdenme por Dios

acalanto

  • Miembro activo
  • **
  • Mensajes: 80
    • Ver Perfil
Arboles Binarios en Visual Basic
« Respuesta #1 en: Viernes 11 de Julio de 2003, 21:18 »
0
Yo hace unos días he implementado un árbol binario en Vbasic que me parece bastante potente.

Doy por entendido que sabes manejar bien la programación porque de lo contrario es probable que te hagas un pequeño lio pero prueba lo siguiente:

'Estructura Para las claves
Type reg
   loReg as long
   HiReg as long
   Key as string
end type

'Estructura para los nodos
Type Nodos
   IdKey as string
   items as long
   regs() as reg
end type

public Nod() as Nodos
Public idPtr as integer


'Añadir un nuevo árbol de claves (aqui supongo que idPtr está iniciado a '0')
Public Sub AddNode(NombreArbol as string)
     IdPtr=IdPtr + 1
     redim preserve Nod(1 to IdPtr)
     nod(idptr)=NombreArbol
     nod(idPtr).items=0
end sub

'Para añadir una clave en un árbol
Public AddKey(Arbol as string, NewKey as string, Valor as string)
    'Aqui pondremos una función que busque si la clave existe
    if existKey(Arbol,NewKey,Valor) then
        'Código para actualizar el valor de la key
    else
        Nod(idArbol(Arbol)).items=Nod(idArbol(Arbol)).items+1
        redim preserve Nod(IdArbol(Arbol)).regs(1 to Nod(idArbol(Arbol)).items)
        Nod(IdArbol(Arbol)).regs(Nod(idArbol(Arbol)).items).key=newkey
        Nod(IdArbol(Arbol)).regs(Nod(idArbol(Arbol)).items).loreg=<nodo contiene clave menor>
        Nod(IdArbol(Arbol)).regs(Nod(idArbol(Arbol)).items).hireg=<nodo contiene clave mayor>
    end if
end sub



Este código te muestra la capacidad de Vbasic de disponer dde algo parecido a la memoria dinámica redimensionando Arrays de tipos con la directiva PRESERVE que mantiene el contenido de la matriz.

Naturalmente tendrás que desarrollar las funciones de búsqueda, eliminación, recorrido etc...y si lo metes todo dentro de una clase tendrás un sistema de árbol balanceado que puedes usar para guardar claves de búsqueda en un fichero etc... ya que grabando en un fichero binario la estructura NOD(), lo podrás leer tantas veces como desees.

Te aconsejo te hagas con el siguiente libro :

PROGRAMACION EN C++ de Luis Joyanes Aguilar (Editorial McGrawHill) es un poco caro pero las estructuras de datos las explica realmente bien (y esa algorítmia la puedes aplicar a cualquier lenguaje que conozcas lo suficientemente bien)

Espero que este rollo te sea útil

Un saludo

efra1481

  • Nuevo Miembro
  • *
  • Mensajes: 1
    • Ver Perfil
Re: Arboles Binarios en Visual Basic
« Respuesta #2 en: Jueves 19 de Agosto de 2004, 12:29 »
0
Cita de: "acalanto"
Yo hace unos días he implementado un árbol binario en Vbasic que me parece bastante potente.

Doy por entendido que sabes manejar bien la programación porque de lo contrario es probable que te hagas un pequeño lio pero prueba lo siguiente:

'Estructura Para las claves
Type reg
   loReg as long
   HiReg as long
   Key as string
end type

'Estructura para los nodos
Type Nodos
   IdKey as string
   items as long
   regs() as reg
end type

public Nod() as Nodos
Public idPtr as integer


'Añadir un nuevo árbol de claves (aqui supongo que idPtr está iniciado a '0')
Public Sub AddNode(NombreArbol as string)
     IdPtr=IdPtr + 1
     redim preserve Nod(1 to IdPtr)
     nod(idptr)=NombreArbol
     nod(idPtr).items=0
end sub

'Para añadir una clave en un árbol
Public AddKey(Arbol as string, NewKey as string, Valor as string)
    'Aqui pondremos una función que busque si la clave existe
    if existKey(Arbol,NewKey,Valor) then
        'Código para actualizar el valor de la key
    else
        Nod(idArbol(Arbol)).items=Nod(idArbol(Arbol)).items+1
        redim preserve Nod(IdArbol(Arbol)).regs(1 to Nod(idArbol(Arbol)).items)
        Nod(IdArbol(Arbol)).regs(Nod(idArbol(Arbol)).items).key=newkey
        Nod(IdArbol(Arbol)).regs(Nod(idArbol(Arbol)).items).loreg=<nodo contiene clave menor>
        Nod(IdArbol(Arbol)).regs(Nod(idArbol(Arbol)).items).hireg=<nodo contiene clave mayor>
    end if
end sub



Este código te muestra la capacidad de Vbasic de disponer dde algo parecido a la memoria dinámica redimensionando Arrays de tipos con la directiva PRESERVE que mantiene el contenido de la matriz.

Naturalmente tendrás que desarrollar las funciones de búsqueda, eliminación, recorrido etc...y si lo metes todo dentro de una clase tendrás un sistema de árbol balanceado que puedes usar para guardar claves de búsqueda en un fichero etc... ya que grabando en un fichero binario la estructura NOD(), lo podrás leer tantas veces como desees.

Te aconsejo te hagas con el siguiente libro :

PROGRAMACION EN C++ de Luis Joyanes Aguilar (Editorial McGrawHill) es un poco caro pero las estructuras de datos las explica realmente bien (y esa algorítmia la puedes aplicar a cualquier lenguaje que conozcas lo suficientemente bien)

Espero que este rollo te sea útil

Un saludo
Compadre necesito el programita de los recorridos  de los arboles en visual basic,  nada que he podido y lo necesito para la U, si me puedes ayudar te lo agradeceria mucho...ok.....


Gracias....

efracor03@hotmail.com

RadicalEd

  • Moderador
  • ******
  • Mensajes: 2430
  • Nacionalidad: co
    • Ver Perfil
Re: Arboles Binarios en Visual Basic
« Respuesta #3 en: Miércoles 15 de Septiembre de 2004, 19:05 »
0
PERDON LES ACLARO ALGO PERO AQUI EN EL FORO NO SE HACEN TAREAS PASENSEN POR ACA Y VERAN ALGO QUE DEBEN LEER ANTES DE POSTEAR PREGUNTAS PREGUNTAS INTELIGENTES, ESTE FORO ES PARA ACLARAR DUDAS, NO PARA HACERLE LOS TRABAJOS A BOBOS MEDIOCRES QUE NO SABEN HACER NADA POR SI SOLOS
El pasado son solo recuerdos, el futuro son solo sueños