Anda di halaman 1dari 44

Algoritmos

y
Estructuras de Datos
Cursada 2010

Prof. Catalina Mostaccio


Prof. Alejandra Schiavoni
Facultad de Informática - UNLP
Árboles Binarios

Algoritmos y Estructuras de Datos


Agenda

 Árbol Binario
 Árboles de Expresión
 Árbol Binario de Búsqueda
 Árboles AVL

Algoritmos y Estructuras de Datos 3


Árbol Binario: Definición
 Un árbol binario es una colección de nodos,
tal que:
• puede estar vacía
• puede estar formada por un nodo distinguido R,
llamado raíz y dos sub-árboles T1 y T2, donde la
raíz de cada subárbol Ti está conectado a R por
medio de una arista

Algoritmos y Estructuras de Datos 4


Árbol de Expresión
Es un árbol binario asociado a una
expresión aritmética

 Nodos internos representan operadores

 Nodos externos (hojas) representan


operandos

Algoritmos y Estructuras de Datos 5


Árbol de Expresión
Ejemplo:
/

* +
e f
+ -
a b c d

Algoritmos y Estructuras de Datos 6


Árbol de Expresión
Recorriendo el árbol, obtenemos:

Inorden: (((a + b) * (c – d)) / (e + f))


Preorden: /*+ab-cd+ef
Posorden: ab+cd-*ef+/

Algoritmos y Estructuras de Datos 7


Construcción de un árbol de expresión

A partir de una:

 Expresión postfija -
2 +
 Expresión prefija * 5

3 4
 Expresión infija

Algoritmos y Estructuras de Datos 8


Construcción de un árbol de expresión a
partir de una expresión postfija
Algoritmo:
tomar un carácter de la expresión
mientras ( existe carácter ) hacer
si es un operando  creo un nodo y lo apilo.
si es un operador (lo tomo como la raíz de los dos
últimos nodos creados)
 - creo un nodo R,
- desapilo y lo pongo como hijo derecho de R
- desapilo y lo pongo como hijo izquierdo de R
- apilo R.
tomo otro carácter
fin

Algoritmos y Estructuras de Datos 9


Construcción de un árbol de expresión a
partir de una expresión prefija
Algoritmo:

ArbolExpresión (A: ArbolBin, exp: string )

si exp nulo  nada.


si es un operador  - creo un nodo raíz R
- ArbolExpresión (subArbIzq de R, exp
(sin 1° carácter) )
- ArbolExpresión ( subArbDer de R, exp
(sin 1° carácter) )
si es un operando  creo un nodo (hoja)

Algoritmos y Estructuras de Datos 10


Construcción de un árbol de expresión a
partir de una expresión infija
Expresión infija 2+5*3+1
Se usa una pila y se tiene en
cuenta la precedencia
de los operadores

Expresión postfija 253*+1+

Se usa la estrategia
anterior

Árbol de Expresión

Algoritmos y Estructuras de Datos 11


Árbol Binario de Búsqueda: Definición

Un árbol binario de búsqueda es una


colección de nodos conteniendo
claves, que debe cumplir con una
propiedad estructural y una de orden.

Algoritmos y Estructuras de Datos 12


Árbol Binario de Búsqueda

La propiedad estructural: es un árbol binario


La propiedad de orden, es la siguiente:
para cada nodo N del árbol se cumple que
todos los nodos ubicados en el subárbol
izquierdo contienen claves menores que la
clave del nodo N y los nodos ubicados en el
subárbol derecho contienen claves mayores
que la clave del nodo N
Algoritmos y Estructuras de Datos 13
Árboles AVL
 Definición
 Características
 Inserción
 Desbalanceo
 Rotaciones Simples y Dobles
 Eliminación

Algoritmos y Estructuras de Datos 14


Árbol AVL: Definición
Un árbol AVL (Adelson–Velskii–Landis) es un árbol
binario de búsqueda que cumple con la condición
de estar balanceado

 La propiedad de balanceo que cumple dice:

Para cada nodo del árbol, la diferencia de altura


entre el subárbol izquierdo y el subárbol derecho es
a lo sumo 1
Algoritmos y Estructuras de Datos 15
Características
 La propiedad de balanceo es fácil de mantener y
garantiza que la altura del árbol es de O(log n)

 En cada nodo del árbol se guarda información


de la altura

 La altura del árbol vacío es -1

 Se debe mantener el balanceo al realizar las


operaciones sobre el árbol (inserción y borrado)
Algoritmos y Estructuras de Datos 16
Operaciones en un AVL

 Inserción

 Eliminación

Algoritmos y Estructuras de Datos 17


Inserción en el árbol AVL
 La inserción se realiza igual que en un árbol
binario de búsqueda

 Puede destruirse la propiedad de balanceo

Rebalancear el árbol

Algoritmos y Estructuras de Datos 18


Problemas: Desbalanceo
 Al insertar un elemento se actualiza la
información de la altura de los nodos que
están en el camino desde el nodo insertado a
la raíz

 El desbalanceo sólo se produce en ese


camino, ya que sólo esos nodos tienen sus
subárboles modificados

Algoritmos y Estructuras de Datos 19


Problemas: Desbalanceo
Ejemplo al insertar un nodo
Se desbalancea el 6
10
10 10
10

66 17
17 17
17
66

44 15
15 20
20 44 15
15 20
20

22

Árbol después de
insertar el 2

Algoritmos y Estructuras de Datos 20


Rebalanceo del árbol
Para restaurar el balanceo del árbol:

 se recorre el camino de búsqueda en orden


inverso
 se controla el equilibrio de cada nodo
 Si está desbalanceado se realiza una
modificación simple: rotación
 después de rebalancear el nodo, la inserción
termina
 este proceso puede llegar a la raíz

Algoritmos y Estructuras de Datos 21


Rebalanceo del árbol
Hay 4 casos posibles de desbalanceo a tener en
cuenta, según donde se hizo la Inserción. El nodo
A es el nodo desbalanceado.

AA AA
1. Inserción en el Subárbol 2. Inserción en el Subárbol DER
IZQ del hijo IZQ de A del hijo IZQ de A

A
A
3. Inserción en el Subárbol IZQ 4. Inserción en el Subárbol A
A
del hijo DER de A DER del hijo DER de A

Algoritmos y Estructuras de Datos 22


Rebalanceo del árbol
 La solución para restaurar el balanceo es la
ROTACION

La rotación es una modificación simple de


la estructura del árbol, que restaura la
propiedad de balanceo, preservando el
orden de los elementos

Algoritmos y Estructuras de Datos 23


Rebalanceo del árbol

 Existen dos clases de rotaciones:


 Rotación Simple: Casos 1 y 4: inserción en el
lado externo
 Rotación Doble: Casos 2 y 3: inserción en el
lado interno

 Soluciones simétricas: En cada caso, los


subárboles están opuestos.

Algoritmos y Estructuras de Datos 24


Rotación Simple
Caso 1: Rotación Simple Izq-Izq

2
1
2
1

C
A B C
B
A

Se obtuvo nuevamente un árbol balanceado


Algoritmos y Estructuras de Datos 25
Rotación Simple (cont.)
Siguiendo con el ejemplo:

10
10 Rot. Simple 10
10

66 17
17 44 17
17

44 15
15 20
20 22 66 15
15 20
20

22

Algoritmos y Estructuras de Datos 26


Rotación Simple (cont.)
Caso 4: Rotación Simple Der-Der

Es simétrico al caso 1, el desbalanceo se


produce hacia el lado derecho

Algoritmos y Estructuras de Datos 27


Rotación Simple (cont.)
Ejemplo:

Insertar las claves del 1 al 7 en ese orden,


en un árbol AVL inicialmente vacío

Algoritmos y Estructuras de Datos 28


Rotación Simple (cont.)
11 Rot. Simple con Derecho 22 
22
11 33

33
22

11 33 Rot. Simple con Derecho 22 


44 11 44
44
55
33 55
55
33

Algoritmos y Estructuras de Datos 29


Rotación Simple (cont.)
Siguiendo con el ejemplo:
22 Rot. Simple 44

11 44 22 55

33 55 11 33 66

66

Algoritmos y Estructuras de Datos 30


Rotación Simple (cont.)
Siguiendo con el ejemplo:

44 Rot. Simple 44

22 55 22 66

11 33 66 11 33 55 77

77

Algoritmos y Estructuras de Datos 31


Rotación Doble
 En algunos casos la rotación simple no
resuelve el problema

Caso 2: Rotación Doble Izq-Der


Rotación Simple
60
60 30
30
30
30 60
60

40
40 40
40

Algoritmos y Estructuras de Datos 32


Rotación Doble (cont.)
 Dado que el subárbol B tiene
por lo menos un ítem, podemos
3 considerar que está formado por
una raíz y dos subárboles

1 3

1
C
A 2
B
C
A
B1 B2
Algoritmos y Estructuras de Datos 33
Rotación Doble (cont.)
 La rotación doble es similar a la simple, sólo
que involucra cuatro subárboles en lugar de tres
 Ni los nodos 1 y 3 pueden quedar como raíz, la 3
única alternativa es que quede el nodo 2

Primero se hace una rotación 2


simple entre 1 y 2
1
C
B2

A B1

Algoritmos y Estructuras de Datos 34


Rotación Doble (cont.)
2 Luego se hace una rotación
simple entre 2 y 3

1 3

B1 B2
A C

Algoritmos y Estructuras de Datos 35


Rotación Doble (cont.)
Caso 3: Rotación Doble Der-Izq

Es simétrica al caso 2, la inserción se


produce en el subárbol izquierdo del hijo
derecho.

Algoritmos y Estructuras de Datos 36


Rotación Doble (cont.)
 Ejemplo:

Continuar con el ejemplo anterior, insertando


las claves del 8 al 15 en orden inverso.

¡¡¡ Tarea para el hogar !!!

Algoritmos y Estructuras de Datos 37


Eliminación de un nodo
 La eliminación de un nodo es similar al borrado en un árbol binario
de búsqueda.
 Luego de realizar el borrado se debe actualizar la altura de todos los
nodos, desde el nodo en cuestión hasta la raíz.

 Puede destruirse la propiedad de balanceo

Rebalancear el árbol

Algoritmos y Estructuras de Datos 38


Eliminación de un nodo

Se elimina el nodo 13, se


desbalancea el 14

Algoritmos y Estructuras de Datos 39


Eliminación de un nodo
Rotación simple entre el 14 y
15. Queda desbalanceado el 12

Rotación simple entre el 5 y 12.

Algoritmos y Estructuras de Datos 40


Tiempo de ejecución de las
operaciones en AVL
Las operaciones de:
Búsqueda
Recorren la altura del
Inserción árbol en el peor caso
Eliminación

Algoritmos y Estructuras de Datos 41


Tiempo de ejecución de las
operaciones en AVL (cont.)
Dado que un árbol AVL cumple con la condición de balanceo
Tomamos Nh como el número de nodos en un árbol AVL de
altura h
Nh > Nh-1 + Nh-2 + 1
> 2 N h-2 + 1
> 1 + 2(1 + 2 Nh-4)= 1 + 2 + 22 Nh-4
> 1 + 2 + 22 + 23 N h-6
...
> 1 + 2 + 22 + 23 + ... + 2h/2 = 2(h/2+1) – 1

Entonces:
Algoritmos y Estructuras de Datos 42
Tiempo de ejecución de las
operaciones en AVL (cont.)
2(h/2+1) – 1 < n
h/2 + 1 < log 2(n + 1)
h < 2 (log 2(n + 1) – 1)

Un análisis cuidadoso basado en la teoría de los


números de Fibonacci, nos da un valor más
ajustado de 1.44 log 2(n + 2).

Algoritmos y Estructuras de Datos 43


Operaciones sobre los árboles AVL:
Conclusiones
 Las operaciones de inserción y eliminación de un nodo
son similares a las de un árbol binario de búsqueda.
 En ambas operaciones se debe actualizar la
información de la altura y realizar rotaciones si es
necesario.
 La inserción provoca una única reestructuración.
 La eliminación puede provocar varias
reestructuraciones.
 Las operaciones son de O(log n)

Algoritmos y Estructuras de Datos 44

Anda mungkin juga menyukai