SoloCodigo

Programación General => Pascal => Mensaje iniciado por: luktk en Miércoles 7 de Mayo de 2008, 19:43

Título: Árboles En Pascal
Publicado por: luktk en Miércoles 7 de Mayo de 2008, 19:43
Hola a todos... Soy nuevo en el foro. Necesito un poco de ayuda porque estoy estancado. Necesito construir un árbol, en el que cada nodo puede tener como máximo 256 hijos. Mi problema es el siguiente, Sé como se insertan nodos cuando se trata de un arbol binario, es simple, izquierda o derecha, porque como maximo tiene 2 hijos. Pero a la hora de implementar la estructura para que los nodos del arbol tengan como maximo 256 hijos no se me ocurre nada. He pensado en hacer la siguiente estructura, ¿alguien me podria decir si es correcta?
Type
                tElemento=String;
      tArbol=^tNodoArbol;
      tLista=^tNodoLista;
      tNodoArbol=Record
         cadena:tElemento;
         posicion:Byte;
         hijo:tLista;
      End;
      tNodoLista=Record
         nodo:tArbol;
         siguiente:tLista;
      End;
Título: Re: Árboles En Pascal
Publicado por: Enko en Viernes 9 de Mayo de 2008, 15:33
Hola, soy malisimo con esto de listas de Arboles... pero se me ocure que podrías en vez de NodoDerecha, NodoIzquierda hacer un Array de 256 Nodos.
Código: Text
  1.  
  2. Type
  3. PArbol = ^TArbol;
  4. TArbol = Record
  5. Elemento: TElemento;
  6. Siguiente: array[0..255] of PArbol;
  7. Anterior: PArbol;
  8. End;
  9.  
  10.  
Es decir, cada nodo tiene 256 punteros a nodos que tienen 256 punteros.

Código: Text
  1.  
  2.   Start: PNodo;
  3.   Temp: Pnodo;
  4. begin
  5.   New(Temp)
  6.   Start := Temp;
  7.   New(Temp);
  8.   Temp.^Elemento := 'cadena';
  9.   Start.^Siguiente[0] := Temp;
  10.   Temp.^Anterior := Start;
  11.  
  12.  
Título: Re: Árboles En Pascal
Publicado por: luktk en Viernes 9 de Mayo de 2008, 16:32
El problema es que no debo utilizar estructuras estáticas, tengo que utilizar estructuras dinámicas y no sé como hacer para que un nodo del arbol tenga varios hijos, con estructuras dinamicas, estoy un poco pez en el asunto. De todas maneras muchas gracias por el consejo, en el peor de los casos lo utilizaré