Uploaded by Sergio Del Prado

380338864-Ar-Boles

advertisement
ARBOLES
Ing. Betty Suárez Torres
COMPETENCIA
Construye aplicaciones informáticas eficientes
con estructuras de datos estáticas y dinámicas;
innovando en la búsqueda de soluciones con
iniciativa, creatividad y responsabilidad.
DEFINICIÓN
Los árboles son estructuras no lineales y homogéneas en
el que cada elemento puede tener varios elementos
posteriores, pero tan sólo un elemento anterior.
Los árboles son TDA’s adecuados para el tratamiento de
grandes cantidades de información.
Los árboles son muy utilizados en informática para
representar fórmulas algebraicas como un método
eficiente para búsquedas grandes y complejas, listas
dinámicas y aplicaciones diversas tales como inteligencia
artificial o algoritmos de cifrado, asimismo para el diseño
de compiladores, procesamiento de texto y algoritmos de
búsqueda.
ELEMENTOS
Nodo padre: Nodo que apunta a dos nodos hijos.
En un árbol cada nodo sólo puede tener un padre.
Nodo hijo: Es cualquier nodo apuntado por el
nodo padre, un nodo puede tener varios hijos pero
en los árboles binarios sólo puede tener dos.
Nodo raíz: Es el único nodo que no tiene padre y
es el que define el lugar de los demás nodos o
información almacenada.
Hojas: Son todos los nodos que no tienen hijos y
apuntan a null.
ELEMENTOS …
Nodos interiores: Son todos aquellos nodos que no
son ni el nodo raíz ni los nodos hojas.
Un subárbol de un árbol: Es un nodo junto con
todos sus descendientes.
Camino: Es una secuencia de nodos que sirve para
llegar a un dato en el árbol.
Rama: Es un camino que comprende desde la raíz y
cualquiera de las hojas.
Altura: Es el máximo número de nodos de las ramas
del árbol, es decir, el máximo número de nodos que
hay que recorrer para llegar a una hoja desde la raíz.
ELEMENTOS
Nodo padre
Nivel 0
Raíz
Nivel 1
NP
NP
Nivel 1
H
Nodo izquierdo
Números < padre
H
NP
Nodo derecho
Números < padre
H
Nivel 0
TIPOS DE ÁRBOLES
• Árboles perfectamente balanceados: Son árboles
en los que para cada nodo el número de nodos en
sus subárboles derecho e izquierdo difieren como
máximo en uno.
• Un árbol binario (AB): 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). Se conoce el nodo de la
izquierda como hijo izquierdo y el nodo de la
derecha como hijo derecho.
ÁRBOLES BINARIOS DE BÚSQUEDA
(ABB)
• Los árboles binarios de búsqueda son un tipo
especial de árboles binarios, en donde los
valores contenidos en el subárbol izquierdo de
cualquiera de sus nodos son menores al valor
de la raíz; y que todos los nodos que se
encuentran en su subárbol derecho contienen
valores mayores que el contenido de la raíz.
• Los valores duplicados son rechazados.
OPERACIONES EN ABB
1.
Inserción de nodos: Las inserciones de nodos
sólo pueden hacerse como hojas, nunca como
nodos interiores, pudiendo insertarse un nodo
como raíz únicamente cuando el árbol esté vacío.
Procedimiento:
a. Al insertar el nodo se debe determinar si se
coloca como raíz o como hijo de algún nodo
del árbol.
b. Utilizar una función recursiva que en base a
algún criterio, determinará el lugar donde será
ubicado el nuevo nodo (recorrido).
OPERACIONES EN ABB ...
2. Recorrido: Para visualizar o consultar los datos
almacenados en un árbol se necesita recorrer el
árbol o visitar los nodos del mismo. Al contrario que
las listas enlazadas, los árboles binarios no tienen
realmente un primer valor, un segundo valor, tercer
valor, etc.
La designación tradicional de los recorridos utiliza un
nombre para el nodo raíz (N), para el subárbol
izquierdo (I) y para el subárbol derecho (D):
o Preorden (nodo-izquierdo-derecho) (NID)
o Enorden (izquierdo-nodo-derecho) (IND)
o Postorden (izquierdo-derecho-nodo) (IDN)
EJEMPLO DE RECORRIDO EN ABB - I
1.
•
•
•
Recorrido en pre-orden
Visitar la raíz
Recorrer el subárbol izquierdo en pre-orden
Recorrer el subárbol derecho en pre-orden
+
ÁRBOL 1: c * d + e
Pre-orden: + * cde
*
c
e
d
EJEMPLO DE RECORRIDO EN ABB - I
2.
•
•
•
Recorrido en-orden
Recorrer el subárbol izquierdo en in-orden
Visitar la raíz
Recorrer el subárbol derecho en in-orden
+
ÁRBOL 1: c * d + e
In-orden: c * d + e
*
c
e
d
EJEMPLO DE RECORRIDO EN ABB - I
3.
•
•
•
Recorrido post-orden
Recorrer el subárbol izquierdo en in-orden
Recorrer el subárbol derecho en in-orden
Visitar la raíz
+
ÁRBOL 1: c * d + e
Post-orden: cd * e +
*
c
e
d
EJEMPLO DE RECORRIDO EN ABB - II
1. Recorrido en Pre-orden:
mebadlpnvtz
2. Recorrido en In-orden
abdelmnptvz
3. Recorrido en Post-orden
adblentzvpm
M
E
P
ÁRBOL 2
B
A
L
D
N
V
T
Z
EJEMPLO DE RECORRIDO EN ABB - III
1. Recorrido en Pre-orden:
/ + * + ab / cd ^ efg
2. Recorrido en In-orden
a+b*c/d+e^f/g
3. Recorrido en Post-orden
ab + cd / * ef ^ + g /
/
+
g
^
*
ÁRBOL 3
+
a
/
b
c
e
d
f
EJEMPLO DE RECORRIDO EN ABB - IV
1. Recorrido en Pre-orden:
7, 3, 1, 5, 6, 8, 9
2. Recorrido en In-orden
1, 3, 5, 6, 7, 8, 9
3. Recorrido en Post-orden
1, 6, 5, 3, 9, 8, 7
7
3
ÁRBOL 4:
1
8
5
9
7, 3, 1, 5, 6, 8, 9
6
PREGUNTAS?
Download