Download - Árboles Binarios · Arboles Binarios Principios de Computadoras II Ricardo Coppo 4 Universidad Nacional del Sur Definición recursiva Formalmente un árbol binario se puede definir

Transcript
Page 1: Árboles Binarios · Arboles Binarios Principios de Computadoras II Ricardo Coppo 4 Universidad Nacional del Sur Definición recursiva Formalmente un árbol binario se puede definir

Principios de Computadoras II

Árboles Binarios

Departamento de Ingeniería Electrónica y ComputadorasUniversidad Nacional del Sur

Ricardo [email protected]

Page 2: Árboles Binarios · Arboles Binarios Principios de Computadoras II Ricardo Coppo 4 Universidad Nacional del Sur Definición recursiva Formalmente un árbol binario se puede definir

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.

Page 3: Árboles Binarios · Arboles Binarios Principios de Computadoras II Ricardo Coppo 4 Universidad Nacional del Sur Definición recursiva Formalmente un árbol binario se puede definir

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”

Page 4: Árboles Binarios · Arboles Binarios Principios de Computadoras II Ricardo Coppo 4 Universidad Nacional del Sur Definición recursiva Formalmente un árbol binario se puede definir

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

Page 5: Árboles Binarios · Arboles Binarios Principios de Computadoras II Ricardo Coppo 4 Universidad Nacional del Sur Definición recursiva Formalmente un árbol binario se puede definir

Principios de Computadoras IIArboles BinariosRicardo Coppo

5Universidad Nacional del Sur

Ejemplo

A1 A2

Page 6: Árboles Binarios · Arboles Binarios Principios de Computadoras II Ricardo Coppo 4 Universidad Nacional del Sur Definición recursiva Formalmente un árbol binario se puede definir

Principios de Computadoras IIArboles BinariosRicardo Coppo

6Universidad Nacional del Sur

Ejemplo

A1 A2

A11 A12A21 A22

Page 7: Árboles Binarios · Arboles Binarios Principios de Computadoras II Ricardo Coppo 4 Universidad Nacional del Sur Definición recursiva Formalmente un árbol binario se puede definir

Principios de Computadoras IIArboles BinariosRicardo Coppo

7Universidad Nacional del Sur

Ejemplo

A1 A2

A11 A12A21 A22

Page 8: Árboles Binarios · Arboles Binarios Principios de Computadoras II Ricardo Coppo 4 Universidad Nacional del Sur Definición recursiva Formalmente un árbol binario se puede definir

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.

Page 9: Árboles Binarios · Arboles Binarios Principios de Computadoras II Ricardo Coppo 4 Universidad Nacional del Sur Definición recursiva Formalmente un árbol binario se puede definir

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”

Page 10: Árboles Binarios · Arboles Binarios Principios de Computadoras II Ricardo Coppo 4 Universidad Nacional del Sur Definición recursiva Formalmente un árbol binario se puede definir

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.

Page 11: Árboles Binarios · Arboles Binarios Principios de Computadoras II Ricardo Coppo 4 Universidad Nacional del Sur Definición recursiva Formalmente un árbol binario se puede definir

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

Page 12: Árboles Binarios · Arboles Binarios Principios de Computadoras II Ricardo Coppo 4 Universidad Nacional del Sur Definición recursiva Formalmente un árbol binario se puede definir

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

Page 13: Árboles Binarios · Arboles Binarios Principios de Computadoras II Ricardo Coppo 4 Universidad Nacional del Sur Definición recursiva Formalmente un árbol binario se puede definir

Principios de Computadoras IIArboles BinariosRicardo Coppo

13Universidad Nacional del Sur

Árbol Binario (Implementación)Descripción del nodo

del árbol

Page 14: Árboles Binarios · Arboles Binarios Principios de Computadoras II Ricardo Coppo 4 Universidad Nacional del Sur Definición recursiva Formalmente un árbol binario se puede definir

Principios de Computadoras IIArboles BinariosRicardo Coppo

14Universidad Nacional del Sur

Árbol Binario (Implementación)Descripción del nodo

del árbol

Page 15: Árboles Binarios · Arboles Binarios Principios de Computadoras II Ricardo Coppo 4 Universidad Nacional del Sur Definición recursiva Formalmente un árbol binario se puede definir

Principios de Computadoras IIArboles BinariosRicardo Coppo

15Universidad Nacional del Sur

Árbol Binario (Implementación)La clase principal

Page 16: Árboles Binarios · Arboles Binarios Principios de Computadoras II Ricardo Coppo 4 Universidad Nacional del Sur Definición recursiva Formalmente un árbol binario se puede definir

Principios de Computadoras IIArboles BinariosRicardo Coppo

16Universidad Nacional del Sur

Árbol Binario (Implementación)La clase principal

Page 17: Árboles Binarios · Arboles Binarios Principios de Computadoras II Ricardo Coppo 4 Universidad Nacional del Sur Definición recursiva Formalmente un árbol binario se puede definir

Principios de Computadoras IIArboles BinariosRicardo Coppo

17Universidad Nacional del Sur

Árbol Binario (Implementación)La clase principal

Page 18: Árboles Binarios · Arboles Binarios Principios de Computadoras II Ricardo Coppo 4 Universidad Nacional del Sur Definición recursiva Formalmente un árbol binario se puede definir

Principios de Computadoras IIArboles BinariosRicardo Coppo

18Universidad Nacional del Sur

Árbol Binario (prueba)

Page 19: Árboles Binarios · Arboles Binarios Principios de Computadoras II Ricardo Coppo 4 Universidad Nacional del Sur Definición recursiva Formalmente un árbol binario se puede definir

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.

Page 20: Árboles Binarios · Arboles Binarios Principios de Computadoras II Ricardo Coppo 4 Universidad Nacional del Sur Definición recursiva Formalmente un árbol binario se puede definir

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.

Page 21: Árboles Binarios · Arboles Binarios Principios de Computadoras II Ricardo Coppo 4 Universidad Nacional del Sur Definición recursiva Formalmente un árbol binario se puede definir

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.

Page 22: Árboles Binarios · Arboles Binarios Principios de Computadoras II Ricardo Coppo 4 Universidad Nacional del Sur Definición recursiva Formalmente un árbol binario se puede definir

Principios de Computadoras IIArboles BinariosRicardo Coppo

22Universidad Nacional del Sur

Árbol Binario de Búsqueda

Page 23: Árboles Binarios · Arboles Binarios Principios de Computadoras II Ricardo Coppo 4 Universidad Nacional del Sur Definición recursiva Formalmente un árbol binario se puede definir

Principios de Computadoras IIArboles BinariosRicardo Coppo

23Universidad Nacional del Sur

Árbol Binario de BúsquedaImplementación

Page 24: Árboles Binarios · Arboles Binarios Principios de Computadoras II Ricardo Coppo 4 Universidad Nacional del Sur Definición recursiva Formalmente un árbol binario se puede definir

Principios de Computadoras IIArboles BinariosRicardo Coppo

24Universidad Nacional del Sur

Árbol Binario de BúsquedaImplementación

Page 25: Árboles Binarios · Arboles Binarios Principios de Computadoras II Ricardo Coppo 4 Universidad Nacional del Sur Definición recursiva Formalmente un árbol binario se puede definir

Principios de Computadoras IIArboles BinariosRicardo Coppo

25Universidad Nacional del Sur

Implementación

Page 26: Árboles Binarios · Arboles Binarios Principios de Computadoras II Ricardo Coppo 4 Universidad Nacional del Sur Definición recursiva Formalmente un árbol binario se puede definir

Principios de Computadoras IIArboles BinariosRicardo Coppo

26Universidad Nacional del Sur

Árbol Binario de Búsqueda

Page 27: Árboles Binarios · Arboles Binarios Principios de Computadoras II Ricardo Coppo 4 Universidad Nacional del Sur Definición recursiva Formalmente un árbol binario se puede definir

Principios de Computadoras IIArboles BinariosRicardo Coppo

27Universidad Nacional del Sur

Implementación

Page 28: Árboles Binarios · Arboles Binarios Principios de Computadoras II Ricardo Coppo 4 Universidad Nacional del Sur Definición recursiva Formalmente un árbol binario se puede definir

Principios de Computadoras IIArboles BinariosRicardo Coppo

28Universidad Nacional del Sur

Árbol Binario de Busqueda: Eliminación

Eliminar una hoja del árbol

Page 29: Árboles Binarios · Arboles Binarios Principios de Computadoras II Ricardo Coppo 4 Universidad Nacional del Sur Definición recursiva Formalmente un árbol binario se puede definir

Principios de Computadoras IIArboles BinariosRicardo Coppo

29Universidad Nacional del Sur

Árbol Binario de Búsqueda: Eliminación

Eliminar un nodo con un solo hijo

Page 30: Árboles Binarios · Arboles Binarios Principios de Computadoras II Ricardo Coppo 4 Universidad Nacional del Sur Definición recursiva Formalmente un árbol binario se puede definir

Principios de Computadoras IIArboles BinariosRicardo Coppo

30Universidad Nacional del Sur

Árbol Binario de Búsqueda: Eliminación

Eliminar un nodo con un solo hijo

Page 31: Árboles Binarios · Arboles Binarios Principios de Computadoras II Ricardo Coppo 4 Universidad Nacional del Sur Definición recursiva Formalmente un árbol binario se puede definir

Principios de Computadoras IIArboles BinariosRicardo Coppo

31Universidad Nacional del Sur

Árbol Binario de Búsqueda: Eliminación

Eliminar un nodo con un solo hijo

Page 32: Árboles Binarios · Arboles Binarios Principios de Computadoras II Ricardo Coppo 4 Universidad Nacional del Sur Definición recursiva Formalmente un árbol binario se puede definir

Principios de Computadoras IIArboles BinariosRicardo Coppo

32Universidad Nacional del Sur

Implementación

Sigue…

REVISAR!!

Page 33: Árboles Binarios · Arboles Binarios Principios de Computadoras II Ricardo Coppo 4 Universidad Nacional del Sur Definición recursiva Formalmente un árbol binario se puede definir

Principios de Computadoras IIArboles BinariosRicardo Coppo

33Universidad Nacional del Sur

Implementación

Sigue…

Page 34: Árboles Binarios · Arboles Binarios Principios de Computadoras II Ricardo Coppo 4 Universidad Nacional del Sur Definición recursiva Formalmente un árbol binario se puede definir

Principios de Computadoras IIArboles BinariosRicardo Coppo

34Universidad Nacional del Sur

Árbol de Búsqueda BinariaEliminación

Page 35: Árboles Binarios · Arboles Binarios Principios de Computadoras II Ricardo Coppo 4 Universidad Nacional del Sur Definición recursiva Formalmente un árbol binario se puede definir

Principios de Computadoras IIArboles BinariosRicardo Coppo

35Universidad Nacional del Sur

Programa principal

Page 36: Árboles Binarios · Arboles Binarios Principios de Computadoras II Ricardo Coppo 4 Universidad Nacional del Sur Definición recursiva Formalmente un árbol binario se puede definir

Principios de Computadoras II

Árboles Binarios

Departamento de Ingeniería Electrónica y ComputadorasUniversidad Nacional del Sur

Ing. Ricardo [email protected]