2. Introducción.
• Los árboles son estructuras de datos no
lineales.
• Al contrario que las estructuras y las listas
enlazadas que constituyen estructuras
lineales.
• El campo de aplicación es inmenso.
4. Árbol general.
• 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.
5. Un árbol.
• Un árbol consta de un conjunto finito de
elementos, denominados nodos y 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.
6. Definiciones.
• Definición 1: Un árbol consta de un conjunto finito
de elementos, llamados nodos y un conjunto finito de
líneas dirigidas, llamadas ramas, que conectan los
nodos.
• Definición 2: Un árbol es un conjunto de uno o más
nodos tales que:
1. Hay un nodo diseñado especialmente llamado
raíz.
2. Los nodos restantes se dividen en n>=0
conjuntos disjuntos tales que ,... ,en donde cada
uno de estos conjuntos es un árbol. A T,… , ...
se les denomina subárboles del raíz.
T1 Tn
T2
Tn
10. Definición de nivel.
• El nivel de un nodo es su distancia hasta
la raíz. La altura de un árbol es el nivel de
la hoja del camino más largo desde el raíz
más uno.
12. Definición recursiva de árbol:
• Un árbol es un conjunto de nodos que:
1. Es vacío, o bien,
2. Tiene un nodo determinado llamado
raíz del que jerárquicamente descienden
cero o mas subárboles, que también son
árboles.
13. El equilibrio…..
• Un árbol está equilibrado cuando, dado
un número máximo de k hijos para cada
nodo y la altura del árbol h, cada nodo
de nivel l < h - 1 tiene exactamente k
hijos. El árbol está equilibrado
perfectamente cuando cada nodo de
nivel l < h tiene exactamente k hijos.
18. ÁRBOLES BlNARlOS
• Un árbol binario es un árbol en el que
ningún nodo puede tener más de dos
subárboles. En un árbol binario, cada
nodo puede tener, cero, uno o dos hijos
(subárboles).
20. Un árbol binario..
• Un árbol binario es una estructura
recursiva.
• Un árbol binario se divide en tres
subconjuntos disjuntos:
• {R} Nodo raíz
• {I, I_1,I_2} Subárbol izquierdo de R
• {D, D_1, D_2} Subárbol derecho de R
21. Árbol degenerado…
Es aquel en el que existe un solo nodo
hoja ( 4 ) y cada nodo no hoja sólo
tiene un hijo.
25. Crear un árbol binario de raíz 9, rama
izquierda 7 y rama derecha 11:
ArbolBinario raiz;
raiz = CrearNodo(9);
raiz -> hijo-izdo = CrearNodo(7);
raiz -> hijo-dcho = CrearNodo(11);
26. Operaciones con arboles
binarios.
• Determinar su altura.
• Determinar su número de elementos.
• Hacer una copia.
• Visualizar el árbol binario en pantalla o en impresora.
• Determinar si dos árboles binarios son idénticos.
• Borrar (eliminar el árbol).
• Si es un árbol de expresión, evaluar la expresión.
• Si es un árbol de expresión, obtener la forma de
paréntesis de la expresión.
27. Árboles de expresión.
• Una expresión es una secuencia de
tokens (componentes de léxicos que
siguen unas reglas prescritas). Un token
puede ser o bien un operando o bien un
operador.
29. Propiedades…
• Un árbol de expresión es un árbol
binario con las siguientes propiedades:
1. Cada hoja es un operando.
2. Los nodos raíz e internos son operadores.
3. Los subárboles son subexpresiones en las
que el nodo raíz es un operador.
30. Conversión general-binario
• 1.- La raíz de B es la raíz de A.
• 2.- a) Enlazar al nodo raíz con el camino que conecta al
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) Repetir los pasos a) y b) con los nodos del nivel 2,
enlazando siempre en un mismo camino todos los
hermanos –descendientes del mismo- Repetir estos
pasos hasta llegar al nivel más alto.
3.- Girar el diagrama 45 para diferenciar los subárboles
37. Recorrido de un árbol.
• Para consultar los datos almacenados en
un árbol se necesita recorrer el árbol. Al
contrario que las listas enlazadas, los
árboles binarios no tienen realmente un
primer valor, un segundo valor, tercer
valor, etc.
38. Recorrido.
• Un recorrido de un árbol binario requiere
que cada nodo del árbol sea procesado
una vez y sólo una en una secuencia
predeterminada. Existen dos enfoques
generales para la secuencia de recorrido,
profundidad y anchura.
39. Recorrido en profundidad
El proceso exige un camino desde el 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 en profundidad, todos los
descendientes de un hijo se procesan
antes del siguiente hijo.
40. Recorrido en anchura
En l 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 otras
palabras, en el recorrido en anchura, cada
nivel se procesa totalmente antes de que
comience el siguiente nivel.
42. Recorrido preorden
El recorrido preorden (NID) conlleva los
siguientes pasos, en los que el raíz va
antes que los subárboles:
1. Recorrer el raíz (N).
2. Recorrer el subárbol izquierdo (I)
en preorden.
3. Recorrer el subárbol derecho (D)
en preorden.
43. Recorrido enorden.
• El recorrido en orden (inorder) procesa
primero el subárbol izquierdo, después
el raíz y a continuación el subárbol
derecho.
1. Recorrer el subárbol izquierdo
(l)en inorden.
2. Visitar el nodo raíz (N).
3. Recorrer el subárbol derecho ( I )
en inorden.
44. Recorrido postorden.
• El recorrido postorden (IDN) procesa el
nodo raíz (post) después de que los
subárboles izquierdo y derecho se ha
procesado. Se comienza situándose en la
hoja más a la izquierda y se procesa. A
continuación se procesa su subárbol
derecho.
45. • 1. Recorrer el subárbol izquierdo (I) en
postorden.
• 2. Recorrer el subárbol derecho (D) en
postorden.
• 3. Visitar el nodo raíz (N).