Upload
others
View
15
Download
0
Embed Size (px)
Citation preview
Principios de Computadoras II
Árboles Binarios
Departamento de Ingeniería Electrónica y ComputadorasUniversidad Nacional del Sur
Ricardo [email protected]
Principios de Computadoras IIArboles BinariosRicardo Coppo
2Universidad Nacional del Sur
Definición conceptual de árbol binario� Un árbol binario es una estructura de información
compuesta por colección o conjunto de nodos y arcos que forman una estructura jerárquica
� Posee una raíz de la cual dependen a lo sumo 2 subárboles no vacíos
� Cada subárbol posee una arista única que lo une con la raíz.
� Los nodos que no poseen subárboles dependientes se denominan “hojas” del árbol.
Principios de Computadoras IIArboles BinariosRicardo Coppo
3Universidad Nacional del Sur
Ejemplo gráficoRaíz
Subárbolderecho
Subárbolizquierdo
La raíz puede estar vacía
Existe unarelación de“paternidad”
Principios de Computadoras IIArboles BinariosRicardo Coppo
4Universidad Nacional del Sur
Definición recursiva� Formalmente un árbol binario se puede definir
de manera recursiva como sigue:
� Una estructura vacía es un árbol (árbol vacío)
� Sean A1 y A2 árboles disjuntos con raíces r1 y r2 respectivamente. Entonces, la estructura formada con un nodo r, que posee como hijos a A1 y A2 también es un árbol
Principios de Computadoras IIArboles BinariosRicardo Coppo
5Universidad Nacional del Sur
Ejemplo
A1 A2
Principios de Computadoras IIArboles BinariosRicardo Coppo
6Universidad Nacional del Sur
Ejemplo
A1 A2
A11 A12A21 A22
Principios de Computadoras IIArboles BinariosRicardo Coppo
7Universidad Nacional del Sur
Ejemplo
A1 A2
A11 A12A21 A22
Principios de Computadoras IIArboles BinariosRicardo Coppo
8Universidad Nacional del Sur
Definiciones� Un “camino” entre un nodo n1 y nk se define como
una secuencia de nodos n1, n2, …, nk tal que ni es el padre de ni+1 para 1<i<k
� La “longitud” de un camino es la cantidad de aristas que lo conforman (igual a la cantidad de nodos – 1)
� Un “camino de longitud 0” es una que nace y termina en el mismo nodo.
Principios de Computadoras IIArboles BinariosRicardo Coppo
9Universidad Nacional del Sur
Definiciones� Si hay un camino del nodo u al nodo v, entonces v
es “descendiente” de u.
� Si además u ≠ v entonces v es “descendiente propio” de u.
� De forma similar se puede definir “ascendiente” y “ascendiente propio”
Principios de Computadoras IIArboles BinariosRicardo Coppo
10Universidad Nacional del Sur
Definiciones� Un nodo que no tiene hijos es una “hoja” del árbol
� Dos nodos que tienen al mismo padre son “hermanos”
� Se pueden definir otras relaciones de parentesco como “tíos”, “abuelos”, etc.
Principios de Computadoras IIArboles BinariosRicardo Coppo
11Universidad Nacional del Sur
Definiciones� Para cualquier nodo ni, la “profundidad” de ni es la
longitud del camino desde la raíz hasta ni
� La “altura” de ni está dado por el camino más largo del nodo ni hasta una hoja (las hojas son de altura 0)
� La “altura” de un árbol es la altura de la raíz
Principios de Computadoras IIArboles BinariosRicardo Coppo
12Universidad Nacional del Sur
Propiedades especiales� La cantidad máxima de hojas que puede tener un
árbol binario depende de la altura del mismo
� Altura 0 (árbol vacío) Hojasmax = 0� Altura 1 (raíz solo) Hojasmax = 21-1 = 1� Altura 2 Hojasmax = 22-1 = 2� Altura 3 Hojasmax = 23-1 = 4
� Altura h Hojasmax = 2h-1
En un árbol general no se puede calcular este valor
Principios de Computadoras IIArboles BinariosRicardo Coppo
13Universidad Nacional del Sur
Árbol Binario (Implementación)Descripción del nodo
del árbol
Principios de Computadoras IIArboles BinariosRicardo Coppo
14Universidad Nacional del Sur
Árbol Binario (Implementación)Descripción del nodo
del árbol
Principios de Computadoras IIArboles BinariosRicardo Coppo
15Universidad Nacional del Sur
Árbol Binario (Implementación)La clase principal
Principios de Computadoras IIArboles BinariosRicardo Coppo
16Universidad Nacional del Sur
Árbol Binario (Implementación)La clase principal
Principios de Computadoras IIArboles BinariosRicardo Coppo
17Universidad Nacional del Sur
Árbol Binario (Implementación)La clase principal
Principios de Computadoras IIArboles BinariosRicardo Coppo
18Universidad Nacional del Sur
Árbol Binario (prueba)
Principios de Computadoras IIArboles BinariosRicardo Coppo
19Universidad Nacional del Sur
Árbol Binario de Búsqueda(Binary Search Tree – BST)
� Un árbol binario de búsqueda es un árbol binario que además presenta las siguientes propiedades:
� Los valores o nodos contienen elementos que pueden ser ordenados de alguna manera (enteros, cadenas de caracteres, u otro orden definido por el programador).
� Para cada nodo del árbol que almacena un elemento v, todos los elementos x<v se almacenan en su subárbol izquierdo mientras que todos los valores x>v se encuentran el en subárbol derecho.
� En principio se evita el almacenamiento de valores duplicados eneste tipo de árbol.
Principios de Computadoras IIArboles BinariosRicardo Coppo
20Universidad Nacional del Sur
Arboles binarios de búsquedaK
A P
N R
45
35 99
22 37
En este tipo de árbol se evita almacenar valores re petidos.
Principios de Computadoras IIArboles BinariosRicardo Coppo
21Universidad Nacional del Sur
Árboles Binarios de Búsqueda� Si el árbol se encuentra balanceado, los algoritmos de
búsqueda son muy eficientes O(log n).� En el peor caso se comporta como una lista enlazada
� Los algoritmos de determinación del mínimo y máximo elemento almacenado también son muy eficientes.
� Recorrer siempre a la derecha o a la izquierda hasta encontrar una hoja
� Debido a la velocidad de la búsqueda se puede definir un método “contiene(x)” o “pertenece(x)” que dado un valor x, determina si se encuentra o no en el árbol.
Principios de Computadoras IIArboles BinariosRicardo Coppo
22Universidad Nacional del Sur
Árbol Binario de Búsqueda
Principios de Computadoras IIArboles BinariosRicardo Coppo
23Universidad Nacional del Sur
Árbol Binario de BúsquedaImplementación
Principios de Computadoras IIArboles BinariosRicardo Coppo
24Universidad Nacional del Sur
Árbol Binario de BúsquedaImplementación
Principios de Computadoras IIArboles BinariosRicardo Coppo
25Universidad Nacional del Sur
Implementación
Principios de Computadoras IIArboles BinariosRicardo Coppo
26Universidad Nacional del Sur
Árbol Binario de Búsqueda
Principios de Computadoras IIArboles BinariosRicardo Coppo
27Universidad Nacional del Sur
Implementación
Principios de Computadoras IIArboles BinariosRicardo Coppo
28Universidad Nacional del Sur
Árbol Binario de Busqueda: Eliminación
Eliminar una hoja del árbol
Principios de Computadoras IIArboles BinariosRicardo Coppo
29Universidad Nacional del Sur
Árbol Binario de Búsqueda: Eliminación
Eliminar un nodo con un solo hijo
Principios de Computadoras IIArboles BinariosRicardo Coppo
30Universidad Nacional del Sur
Árbol Binario de Búsqueda: Eliminación
Eliminar un nodo con un solo hijo
Principios de Computadoras IIArboles BinariosRicardo Coppo
31Universidad Nacional del Sur
Árbol Binario de Búsqueda: Eliminación
Eliminar un nodo con un solo hijo
Principios de Computadoras IIArboles BinariosRicardo Coppo
32Universidad Nacional del Sur
Implementación
Sigue…
REVISAR!!
Principios de Computadoras IIArboles BinariosRicardo Coppo
33Universidad Nacional del Sur
Implementación
Sigue…
Principios de Computadoras IIArboles BinariosRicardo Coppo
34Universidad Nacional del Sur
Árbol de Búsqueda BinariaEliminación
Principios de Computadoras IIArboles BinariosRicardo Coppo
35Universidad Nacional del Sur
Programa principal
Principios de Computadoras II
Árboles Binarios
Departamento de Ingeniería Electrónica y ComputadorasUniversidad Nacional del Sur
Ing. Ricardo [email protected]