ERDD Arboles1
ERDD Arboles1
ERDD Arboles1
DE DATOS
• Es un método en el cual
la solución a un problema
se alcanza resolviendo
instancias más pequeñas
del mismo.
COMPONENTES DE UNA FUNCIÓN
RECURSIVA
Aquella situación que pueda resolverse Es una situación que para poder
directamente entregando un resultado resolverse necesita resolver antes una
sin necesidad de hacer llamadas instancia más pequeña de sí misma.
recursivas.
FACTORIAL
• Un factorial es la
multiplicación de los
N números naturales
antecesores a X.
5! = 5 · 4 · 3 · 2 · 1
FACTORIAL
f(3) = 3 · f(2)
f(2) = 2 · f(1)
f(1) = 1 · f(0)
f(0) = 1
FACTORIAL
• La implementación recursiva
de la función factorial sería:
NÚMEROS DE
FIBONACCI
Fib fib(0) = 0
NÚMEROS DE FIBONACCI
RESUMEN
• La recursión es una herramienta muy útil, sin embargo, no siempre es la manera más eficiente.
ÁRBOLES
Las estructuras de datos que han sido examinadas
hasta ahora son lineales. A cada elemento le
correspondía siempre un “siguiente” elemento.
INTRODUCCIÓN
Ahora se examinarán las estructuras de datos no
lineales. En estas estructuras cada elemento puede
tener diferentes “siguientes” elementos, que
introduce el concepto de estructuras de bifurcación.
Las estructuras de datos no lineales son árboles y
grafos. A estas estructuras se les denomina también
estructuras multienlazadas.
INTRODUCCIÓN
El árbol es una estructura de datos muy importante en informática y en ciencias de la computación. Los árboles son
estructuras no lineales, al contrario que los arrays y las listas enlazadas, que constituyen estructuras lineales.
Casi todos los sistemas operativos almacenan sus archivos en árboles o estructuras similares a árboles. Además de las
aplicaciones citadas, los árboles se utilizan en diseño de compiladores, procesado de texto y algoritmos de búsqueda.
Á R BO LES
GE N E R A LE S Y
T E R M I N O LO GÍ A
• Intuitivamente, el concepto
de árbol implica una estructura
en la que los datos se
organizan de modo que los
elementos de información
están relacionados entre sí a
través de ramas. El árbol
genealógico es el ejemplo
típico más representativo del
concepto de árbol general.
DEFINICIONES
ÁRBOL
• Un árbol consta de un
conjunto finito de elementos,
denominados nodos y de un
conjunto finito de líneas
dirigidas, denominadas ramas,
que conectan los nodos.
• El número de ramas
asociado con un nodo es el
grado del nodo.
TERMINOLOGÍA
TERMINOLOGÍA
NIVELES Los hijos del nodo raíz están en el nivel 1, sus hijos están
en el nivel 2, y así sucesivamente.
Se conoce el nodo de la
izquierda como hijo izquierdo y
el nodo de la derecha como
hijo derecho.
ÁRBOLES BINARIOS
Afortunadamente existe una técnica para convertir un árbol general a formato de árbol binario. Supongamos que se
tiene el árbol A y se quiere convertir en un árbol binario B. El algoritmo de conversión tiene tres pasos fáciles:
1. La raíz de B es la raíz de A.
2. Pasos 2
a) Enlazar al nodo raíz con el camino que conecta el nodo más a la izquierda (su hijo).
b) Enlazar este nodo con los restantes descendientes del nodo raíz en un camino, con lo que se forma el
nivel 1.
c) A continuación, repetir los pasos a) y b) con los nodos del nivel 2, enlazando siempre en un mismo ca-
mino todos los hermanos —descendientes del mismo nodo—. Repetir estos pasos hasta llegar al nivel
más alto.
3. Girar el diagrama resultante 45° para diferenciar entre los subárboles izquierdo y derecho.
REPRESENTACIÓN DE LOS ÁRBOLES
BINARIOS
Vinculando nodos, objetos con mienbros que referencian otros objetos del
mismo tipo.
RECORRIDO
• El recorrido de un árbol binario requiere que cada
nodo del árbol sea procesado (visitado) una vez, y
sólo una, en una secuencia predeterminada. Existen
dos enfoques generales para la secuencia de
recorrido, profundidad y anchura.
• En el recorrido en profundidad, el proceso exige un
camino desde la raíz a través de un hijo, al
descendiente más lejano del primer hijo antes de
proseguir a un segundo hijo. En otras palabras, en el
RECORRIDO recorrido en profundidad, todos los descendientes de
un hijo se procesan antes del siguiente hijo.
• En el recorrido en anchura, el proceso se realiza
horizontalmente desde el raíz a todos sus hijos; a
continuación, a los hijos de sus hijos y así
sucesivamente hasta que todos los nodos han sido
procesados. En el recorrido en anchura, cada nivel se
procesa totalmente antes de que comience el
siguiente nivel.
Es el proceso que permite acceder una sola vez a cada
uno de los nodos del árbol. Cuando un árbol se recorre,
el conjunto completo de nodos se examina.
Los algoritmos de recorrido de un árbol binario
presentan tres tipos de actividades comunes:
• Visitar el raíz.
• Recorrer el subárbol izquierdo en pre-orden.
• Recorrer el subárbol derecho en pre-orden.
Recorrido in-orden
Recorrido post-orden