Download Principios de Computadoras II - Universidad Nacional del Sur

Document related concepts

Árbol binario de búsqueda wikipedia , lookup

Árbol binario wikipedia , lookup

Recorrido de árboles wikipedia , lookup

Treap wikipedia , lookup

Rotación de árboles wikipedia , lookup

Transcript
Principios de Computadoras II
Departamento de Ingeniería Electrónica y Computadoras
Universidad Nacional del Sur
Árboles Binarios
Ricardo Coppo
[email protected]
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.
Arboles Binarios
Ricardo Coppo
2
Principios de Computadoras II
Universidad Nacional del Sur
Ejemplo gráfico
Raíz
La raíz puede estar vacía
Existe una
relación de
“paternidad”
Subárbol
derecho
Subárbol
izquierdo
Arboles Binarios
Ricardo Coppo
3
Principios de Computadoras II
Universidad 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
Arboles Binarios
Ricardo Coppo
4
Principios de Computadoras II
Universidad Nacional del Sur
Ejemplo
A2
A1
Arboles Binarios
Ricardo Coppo
5
Principios de Computadoras II
Universidad Nacional del Sur
Ejemplo
A2
A1
A11
Arboles Binarios
Ricardo Coppo
A21
A12
6
A22
Principios de Computadoras II
Universidad Nacional del Sur
Ejemplo
A2
A1
A11
Arboles Binarios
Ricardo Coppo
A21
A12
7
A22
Principios de Computadoras II
Universidad 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.
Arboles Binarios
Ricardo Coppo
8
Principios de Computadoras II
Universidad 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”
Arboles Binarios
Ricardo Coppo
9
Principios de Computadoras II
Universidad 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.
Arboles Binarios
Ricardo Coppo
10
Principios de Computadoras II
Universidad 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
Arboles Binarios
Ricardo Coppo
11
Principios de Computadoras II
Universidad 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)
Altura 1 (raíz solo)
Altura 2
Altura 3
Hojasmax = 0
Hojasmax = 21-1 = 1
Hojasmax = 22-1 = 2
Hojasmax = 23-1 = 4
Altura h
Hojasmax = 2h-1
En un árbol general no se puede calcular este valor
Arboles Binarios
Ricardo Coppo
12
Principios de Computadoras II
Universidad Nacional del Sur
Árbol Binario (Implementación)
Descripción del nodo
del árbol
Arboles Binarios
Ricardo Coppo
13
Principios de Computadoras II
Universidad Nacional del Sur
Árbol Binario (Implementación)
Descripción del nodo
del árbol
Arboles Binarios
Ricardo Coppo
14
Principios de Computadoras II
Universidad Nacional del Sur
Árbol Binario (Implementación)
La clase principal
Arboles Binarios
Ricardo Coppo
15
Principios de Computadoras II
Universidad Nacional del Sur
Árbol Binario (Implementación)
La clase principal
Arboles Binarios
Ricardo Coppo
16
Principios de Computadoras II
Universidad Nacional del Sur
Árbol Binario (Implementación)
La clase principal
Arboles Binarios
Ricardo Coppo
17
Principios de Computadoras II
Universidad Nacional del Sur
Árbol Binario (prueba)
Arboles Binarios
Ricardo Coppo
18
Principios de Computadoras II
Universidad 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 en
este tipo de árbol.
Arboles Binarios
Ricardo Coppo
19
Principios de Computadoras II
Universidad Nacional del Sur
Arboles binarios de búsqueda
45
K
A
P
N
99
35
22
R
37
En este tipo de árbol se evita almacenar valores repetidos.
Arboles Binarios
Ricardo Coppo
20
Principios de Computadoras II
Universidad 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).
Los algoritmos de determinación del mínimo y máximo
elemento almacenado también son muy eficientes.
En el peor caso se comporta como una lista enlazada
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.
Arboles Binarios
Ricardo Coppo
21
Principios de Computadoras II
Universidad Nacional del Sur
Árbol Binario de Búsqueda
Arboles Binarios
Ricardo Coppo
22
Principios de Computadoras II
Universidad Nacional del Sur
Árbol Binario de Búsqueda
Implementación
Arboles Binarios
Ricardo Coppo
23
Principios de Computadoras II
Universidad Nacional del Sur
Árbol Binario de Búsqueda
Implementación
Arboles Binarios
Ricardo Coppo
24
Principios de Computadoras II
Universidad Nacional del Sur
Implementación
Arboles Binarios
Ricardo Coppo
25
Principios de Computadoras II
Universidad Nacional del Sur
Árbol Binario de Búsqueda
Arboles Binarios
Ricardo Coppo
26
Principios de Computadoras II
Universidad Nacional del Sur
Implementación
Arboles Binarios
Ricardo Coppo
27
Principios de Computadoras II
Universidad Nacional del Sur
Árbol Binario de Busqueda: Eliminación
Eliminar una hoja del árbol
Arboles Binarios
Ricardo Coppo
28
Principios de Computadoras II
Universidad Nacional del Sur
Árbol Binario de Búsqueda: Eliminación
Eliminar un nodo con un solo hijo
Arboles Binarios
Ricardo Coppo
29
Principios de Computadoras II
Universidad Nacional del Sur
Árbol Binario de Búsqueda: Eliminación
Eliminar un nodo con un solo hijo
Arboles Binarios
Ricardo Coppo
30
Principios de Computadoras II
Universidad Nacional del Sur
Árbol Binario de Búsqueda: Eliminación
Eliminar un nodo con un solo hijo
Arboles Binarios
Ricardo Coppo
31
Principios de Computadoras II
Universidad Nacional del Sur
Implementación
!
!
R
A
S
I
V
Sigue…
Arboles Binarios
Ricardo Coppo
E
R
32
Principios de Computadoras II
Universidad Nacional del Sur
Implementación
Sigue…
Arboles Binarios
Ricardo Coppo
33
Principios de Computadoras II
Universidad Nacional del Sur
Árbol de Búsqueda Binaria
Eliminación
Arboles Binarios
Ricardo Coppo
34
Principios de Computadoras II
Universidad Nacional del Sur
Programa principal
Arboles Binarios
Ricardo Coppo
35
Principios de Computadoras II
Universidad Nacional del Sur
Principios de Computadoras II
Departamento de Ingeniería Electrónica y Computadoras
Universidad Nacional del Sur
Árboles Binarios
Ing. Ricardo Coppo
[email protected]