La Web del Programador: Comunidad de Programadores
 
    Pregunta:  34208 - INFORMACIÓN ACERCA DE LA IMPLEMENTACIÓN DE ARBOLES
Autor:  marcia vejar l.
necesito saber como funcionan, como se trabaja con arboles en pascal.
agradeceria cualquier informacion

  Respuesta:  Patricio Lara B
Marcia :

Lo primero que debes tienes que tener claro es que en Pascal, todo lo que sea listas, pilas, colas y árboles son un Tipo Abstracto de Datos.
Bajo esa perspectiva nada mas tienes que imaginar una caja que tiene al menos 2 cosas dentro : un dato (de cualquier tipo) y una dirección (conocido también como puntero).

La idea de todo esto es asignar una dirección de memoria cualquiera a través del comando L:=nil asegurando ese espacio para comenzar a trabajar, y después ir creando de a una las casillas, cajas o nodos, e ir enlazandolos en forma seguida a esta dirección.

El cuento te queda mas o menos así :

L -> dato//direc -> dato//direc -> dato//direc-> nil

Entonces se dira que esta lista L tiene 3 datos, donde L apunta al primero y el último apunta a nil (vacío o fin de lista).

Con esta información, pasamos a los árboles, que no son otra cosa que casillas (o cajas o nodos) RECURSIVAS con dos direcciones cada una.
Entonces, cada nodo tiene 3 elementos: Izq , Der, Dato y por ende cada apuntador o puntero señalará a otra casilla de las mismas características.

Para recorrer los árboles (insertar, leer o eliminar) existen 3 formas de hacerlo :
1.- INORDEN cuya lectura es IZQ DATO DER
2.- PREORDEN cuya lectura es DATO IZQ DER
3.- POSORDEN cuya lectura es ..... IZQ DER DATO bien!!

Finalmente, al decir recursivo, me refiero a que el algoritmo o módulo de lectura se aplica sobre cada nodo hasta llegar a todos.

Si por ejemplo vas a recorrer un arbol de 3 niveles completos ( 7 nodos en total) trataré de hacerte el dibujo......

Nivel 1 (izq// A \\ der)
/ \
/ \
/ \
Nivel 2 (izq// B \\ der) (izq// C \\ der)
/ \ / \
/ \ / \
/ \ / \
Nivel 3 (izq// D \\ der) (izq// E \\ der) (izq// F \\ der) (izq// G \\ der)

ufffff!!!!!!!!!!!!! eso fué una lata!!!!
Bien...

En INORDEN queda D B E A F C G (IZQ DATO DER)
En PREORDEN queda A B D E C F G (DATO IZQ DER)
En POSTORDEN queda D E B F G C A (IZQ DER DATO)

Es un poco complicado al inicio, pero con calma las cosas salen... por ahí debo tener algún programita antiguo... si llegaras a necesitarlo... avísame ya???

Con atención

Patricio Lara (Santiago, Chile)
[email protected]
[email protected]
[email protected]