Sunteți pe pagina 1din 10

RECORRIDOS SOBRE

ÁRBOLES

FUNDAMENTOS DE PROGRAMACIÓN
Función append de Scheme
Cuando necesitamos concatenar dos o mas listas, podemos
utilizar esta función para que retorne una sola lista que
contenga todos los valores de las listas de entrada

La lista resultante tiene los elementos en el orden en que las


listas a concatenar han sido enviadas como parámetro a la
función

Ejemplos:
(append (list 1 2) (list 3 4) ),
da como resultado: (list 1 2 3 4)
(append (list 6) (list 9 2 0) (list 4 7) ),
da como resultado: (list 6 9 2 0 4 7)
Recorrido en Árboles
En los algoritmos desarrollados sobre árboles binarios se
convirtió en una constante visitar cada nodo del árbol

De forma análoga al recorrido que hacíamos sobre listas,


nuestros recorridos sobre árboles siempre han involucrado
un llamado recursivo

El llamado recursivo se ha realizado aprovechando la


recursividad estructural de los árboles, es decir, el recorrido
explota de forma natural la configuración recursiva de las
partes de un árbol
Ejercicio
Utilizando el TAD Arbin
Desarrolle un programa en Scheme que tome como entrada
un árbol y retorne como salida una lista con todos los nodos
del árbol
9
Puede utilizar (como función
3 2 auxiliar) la función append
para concatenar listas en
6 1 8 5 Scheme

4 7

Desarrolle una función cuyo contrato sea:


arbolAlista: arbin -> lista
Formas de Recorrer Árboles
De acuerdo con la función propuesta por usted, cuál es la
salida para el árbol de entrada del ejemplo?

9 Es alguna de las siguientes listas?


a) (list 9 3 2 6 1 8 5 4 7)
3 2
b) (list 9 3 6 1 2 8 4 7 5)
6 1 8 5 c) (list 6 3 1 9 4 8 7 2 5)
d) (list 6 1 3 4 7 8 5 2 9)
4 7

La salida de su función es alguna otra lista?


Recorrido en PreOrden
Este recorrido es quizás el mas intuitivo de todos y consiste en
visitar el nodo raíz actual y luego visitar cada subárbol de la misma
forma

En un árbol binario se define recursivamente como:

El recorrido en en PreOrden tiene los siguientes pasos:


1) Visite la raíz
2) Visite el subárbol izquierdo en PreOrden
3) Visite el subárbol derecho en PreOrden

En el árbol anterior es el recorrido que


muestra la lista de la opción b)
Recorrido en PostOrden
Este recorrido hace lo mismo que el de preorden pero en orden
inverso y consiste en visitar cada subárbol y luego el nodo raíz

En un árbol binario se define recursivamente como:

El recorrido en en PostOrden tiene los siguientes pasos:


1) Visite el subárbol izquierdo en PostOrden
2) Visite el subárbol derecho en PostOrden
3) Visite la raíz

En el árbol del ejemplo es el recorrido que


muestra la lista de la opción d)
Recorrido en InOrden
En este recorrido la visita a la raíz se realiza después de la visita al
primer subárbol

En un árbol binario se define recursivamente como:

El recorrido en en InOrden tiene los siguientes pasos:


1) Visite el subárbol izquierdo en InOrden
2) Visite la raíz
3) Visite el subárbol derecho en InOrden

En el árbol del ejemplo es el recorrido que


muestra la lista de la opción c)
Recorrido en Amplitud
También conocido como recorrido en anchura, este recorrido
consiste en visitar la raíz, luego cada uno de los nodos hijos,
después cada uno los hijos de esos nodos, y así sucesivamente
hasta llegar a las hojas

Este tipo recorrido implica visitar el árbol por niveles, donde


primero se visita el nodo de nivel 0, luego los nodos de nivel 1, y así
sucesivamente hasta llegar a los nodos de mayor nivel del árbol

En el árbol del ejemplo es el recorrido que


muestra la lista de la opción a)
Clasificación de los Recorridos
De acuerdo con la forma como recorren un árbol, los recorridos se
clasifican principalmente en:
• Profundidad
• PreOrden
• InOrden
• PostOrden

• Amplitud

¿Es sencillo implementar en Scheme los recorridos en profundidad


sobre un árbol? Impleméntelos para el TAD Arbin

Busque una estrategia e implemente el ejercicio de la diapositiva 4


de manera que utilice un recorrido en amplitud

S-ar putea să vă placă și