Vous êtes sur la page 1sur 77

UNIDAD 1

rboles
rboles Binarios de bsquela
rboles AVL
rboles Roji-Negros

rboles

Definiciones
Son de una de las estructuras de datos mas

utilizadas
Dentro de la computacin tienen, entre otras
las siguientes aplicaciones:
Organizar tablas
Asignacin de bloques de memoria
Bsqueda
Ordenamiento

Definicin
Un rbol es un conjunto finito T de uno o mas

nodos tal que:


Existe un nodo especial llamado raz
Los nodos restantes estn particionados en m>0

conjuntos disjuntos T1,Tm y cada uno de estos


conjuntos es un rbol

Representacin grafica
Conjuntos anidados

Representacin grafica
Parntesis anidados:

(1(2(4(9,10,11),5),3(6(12),7,8)))
Indentacion:

Representacin grafica
La forma mas comn es un grafo con la raz

hacia arriba:

Propiedades
Cada vrtice o nodo puede tener un nombre y

una informacin asociada

Un camino es una lista de vrtices diferentes en

los que vrtices sucesivos estn conectados por


arcos en el rbol

La longitud de un camino es el nmero de nodos

del camino menos uno. Por tanto, hay un


camino de longitud cero de cualquier nodo a si
mismo

Propiedades
Un nodo Y est abajo de un nodo X, si X est en

el camino de Y a la raz

Cada nodo, excepto la raz, tiene exactamente

un nodo arriba de l, que es llamado su padre

Los nodos que estn exactamente abajo de l

son llamados sus hijos

El nmero de hijos que cuelgan de un nodo es

llamado el grado del nodo

Propiedades
El grado de un rbol es el grado mximo de los

nodos del rbol


Un nodo de grado cero es llamado hoja, es

decir, no tiene hijos

Ejemplo

Muestre el camino del nodo A al nodo P e indique la longitud del


camino
Cules son las hojas del rbol?
Muestre los nodos de grado 1, 2 y 3
Cul es el grado del rbol?

SOLUCIN
El camino del nodo A al nodo P es (A, B, D, J, P),

cuya longitud de camino es 4


Las hojas son: I, P, K, L, F, M, N, O y H
El nico nodo de grado 1 es J.
Los nodos de grado 2 son A, B, D y E.
Los nodos de grado 3 son C y G.
No existen nodos de mayor grado, por tanto, el
grado del rbol es 3.

Propiedades
El nivel de un nodo es el nmero de nodos en el

camino de l hacia la raz


La altura de un rbol es el nivel mximo de

todos los nodos en el rbol

Ejemplo

La altura del rbol es 4

Bosques
Un conjunto de rboles es llamado bosque
Si se elimina la raz de un rbol, se convierte en

un bosque
Si se aumenta un nodo a un bosque, se

convierte en rbol

rboles Binarios de Bsqueda


(ABB)

Definiciones
Son el caso particular mas simple
Definicin:
Un conjunto T de elementos es un rbol binario

de bsqueda si:
T es vaci
T esta particionado en 3 conjuntos disjuntos

Definiciones
Esos tres conjuntos son:
Un solo elemento llamado la raz
2 conjuntos que son ABB, llamados subrbol

izquierdo y subrbol derecho

Definiciones
Donde n es un nodo y TD y TI son rboles

binarios, adems de cumplir con las siguientes


propiedades:
La llave de bsqueda (el valor) de n es MAYOR

que todas las llaves de bsqueda de TI


La llave de bsqueda (el valor) de n es MENOR
que todas las llaves de bsqueda de TN

Representacin
La forma mas simple de representar un rbol

binario es la ligada:

Ejemplo

Representacin ligada

Operaciones con un ABB


Insercin
Bsqueda
Eliminacin
Recorridos

Insercin
Insertar el elemento X
Si el rbol esta vaci, X ser la raz del rbol
Si no esta vaci se compara el valor de X con el

del nodo padre:


Si es menor se inserta como un hijo izquierdo
Si es mayor se inserta como hijo derecho

Insercin, Ejemplo
Crear un ABB insertando los siguientes

elementos: 10, 8, 14, 12, 9, 17, 5, 7, 11, 16, 13,


3, 21

Bsqueda
Para buscar al elemento X:
Si X es la llave de la raz de un ABB se ha

terminado.
Si X es menor que el padre, se busca a la
izquierda
Si X es mayor que el padre, se busca a la derecha

Bsqueda, Ejemplo

Si se busca el elemento 7:
Se compara 7 con 10 y se desciende por la izquierda
Se compara 7 con 8 y se desciende por la izquierda
Se compara 7 con 5 y se desciende por la derecha
Se encuentra la llave deseada

Eliminacin
Eliminacin de un elemento X
Si el elemento se encuentra, existen tres

posibilidades:
El elemento es una hoja
Tiene un hijo nico
Tiene dos hijos

Eliminacin de una hoja


Caso mas sencillo, en donde lo nico que hay

que hacer es que la liga que lo referencia debe


ser nil

Con un hijo nico


Para eliminar un nodo, su padre deber

referenciar a su hijo

Con un hijo nico


Al eliminar la llave 4, se debe cambiar el

subrbol izquierdo de 5 por el que contiene a 2


como raz

Con un hijo nico


Es el mismo procedimiento para eliminar un nodo con un nico

hijo izquierdo
Al eliminar el nodo cuya informacin es 6, el subrbol izquierdo
de 8 referenciar al subrbol derecho del 6 (nodo 7)

Con dos hijos


Existen dos opciones:
Sustituir el valor de la informacin del nodo a

eliminar por el nodo que contiene la menor llave


del subrbol derecho (Menor de los mayores)
Sustituir el valor de la informacin del nodo a
eliminar por el nodo que contiene la mayor llave
del subrbol izquierdo (Mayor de los menores)

Eliminacin con dos hijos

Si se desea eliminar la raz, se substituye el valor por la llave

con el mayor de los menores y luego eliminar ese valor

O sustituir el valor por la llave con el menor de los mayores y

luego eliminar ese valor

Eliminacin con dos hijos


Utilizando el mayor de los menores

Eliminacin con dos hijos


Utilizando el menor de los mayores

Recorridos en un ABB
Existen tres maneras de recorrer un rbol

binario de bsqueda:
Preorden o previo
Inorden o simtrico
Postorden o posterior

La diferencia entre ellas es el orden en que se

visitan los nodos

Recorridos
Pre orden o previo
Visitar la raz
Recorrer recursivamente el subrbol izquierdo
Recorrer recursivamente el subrbol derecho

Inorden o simetrico
Recorrer recursivamente el subrbol izquierdo
Visitar la raz
Recorrer recursivamente el subrbol derecho

Post orden o posterior


Recorrer recursivamente el subrbol izquierdo
Recorrer recursivamente el subrbol derecho
Visitar la raz

Recorridos, Ejemplo

preorden:
20, 15 10, 5, 12, 18, 17, 19, 33, 25, 21, 27, 50, 40, 70
inorden:
5, 10, 12, 15, 17, 18, 19, 20, 21, 25, 27, 33, 40, 50, 70
postorden:
5, 12, 10, 17, 19, 18, 15, 21, 27, 25, 40, 70, 50, 33, 20

Desempeo
El peor caso en un ABB es cuando se insertan

elementos que se encuentran ordenados (ya sea de


menor a mayor o viceversa)
Por esta razn su uso no es recomendable cuando se maneja

informacin extrada por ejemplo de un diccionario

Desempeo
Si se insertan n elementos en un ABB de altura

h:
El espacio utilizado en el peor de los casos es O(n)
Los mtodos de insercin, bsqueda y eliminacin

son de tiempo O(h)


La altura en el peor de los casos es O(n) y en el
mejor de los casos O(log n)

Peor de los casos

rboles Adelson-Velskii y Landis


(AVL)

Definiciones
Es un rbol binario de bsqueda equilibrado
Un rbol AVL es un ABB en donde las alturas de

los hijos izquierdo y derecho solo pueden diferir


a lo mximo en uno

Definiciones

Operaciones con rboles AVL


Insercin
Bsqueda
Eliminacin
Recorrido
Balanceo

Operaciones
Las operaciones de bsqueda y recorridos son

las mismas que para un ABB


Las operaciones de insercin y borrado de un

elemento son las mismas, con la excepcin de


que despus de ejecutarlas requieren una
operacin de balanceo

Balanceo

Tras una insercin, los nodos pueden ver


alterado su equilibrio

Existen cuatro casos que se deben considerar:


1.
2.
3.
4.

Una insercin
izquierdo de X.
Una insercin
izquierdo de X.
Una insercin
derecho de X.
Una insercin
derecho de X.

en el subrbol izquierdo del hijo


en el subrbol derecho del hijo
en el subrbol izquierdo del hijo
en el subrbol derecho del hijo

Balanceo
En el primer y cuarto caso, en donde la insercin

se produce en los mrgenes, el balance se


recupera con una rotacin simple.

Balanceo simple
El subrbol A ha crecido en un nivel, provocando

que sea dos niveles ms profundo que C


Para re equilibrar de manera correcta el rbol,
hay que subir A un nivel y bajar C
El resultado es que k1 ser la nueva raz
La propiedad de los rboles binarios de
bsqueda indica que en el rbol inicial, k2 > k1,
as que en el nuevo rbol k2 se convierte en el
hijo derecho de k1

Rotacin simple a la derecha

Ejemplo

Rotacin simple a la izquierda

Ejemplo

Rotaciones dobles
La rotacin simple tiene el problema de que no

resuelve el problema en los casos 2 y 3


Para resolver el problema se deben efectuar dos
rotaciones sencillas:
Una rotacin simple entre el hijo de X y su nieto,

seguida de una rotacin simple entre X y su nuevo


hijo

Rotacin doble

Rotacin doble

Ejemplo

Desempeo
Al ser los rboles AVL balanceados, no importa

en que orden se ingresen las llaves, la altura


siempre ser de O(log n):
La altura mnima de un rbol AVL de n llaves es:

piso |log n|
La altura mxima : techo|log n|+1

rboles Roji-Negros

Definicin
Un rbol Roji-Negro es un rbol binario cuyos

nodos estn coloreados de rojo o de negro

Definicin
Un

rbol Roji-Negro
siguientes propiedades

debe

satisfacer

las

La raz es NEGRA
Toda hoja es NEGRA (propiedad externa)
Los hijos de un nodo ROJO son NEGROS
Propiedad de profundidad: todos los nodos externos

tienen la misma profundidad NEGRA, que se define


como la cantidad de ante pasados NEGROS menos
uno

Operaciones con rboles RN


Insercin
Bsqueda
Recorrido
Eliminacin
Balanceo

Operaciones
Las operaciones de bsqueda y de recorrido son

las mismas que para un ABB


Las operaciones de insercin y eliminacin

requieren una revisin y en su caso correccin


de las propiedades de un rbol RN

Insercin
En un ARN (rbol Roji-Negro) inicialmente vaco,

la raz debe ser NEGRA


En caso de que se viole alguna de las
propiedades anteriores, se tienen dos tipos de
operacin:
Recoloracin
Reestructuracin

Recoloracin
Se presenta cuando tanto el padre como el to

de un nodo recin insertado son ROJOS

Caso 1

Caso 2

Caso 3

Caso 4

Reestructuracin
Existen cuatro casos posibles de acuerdo al

color de hijo, padre y abuelo


stos casos se presentan cuando se tiene un
doble ROJO (padre e hijo son ROJOS)
Para corregir estos casos se cuenta con
rotaciones similares a las aplicadas en los
rboles AVL

Caso 1
padre.color = NEGRO
abuelo.color = ROJO
RotaDerecha(abuelo)

Caso 2
padre.color = NEGRO
abuelo.color = ROJO
RotaIzquierda(abuelo)

Caso 3
RotaDerecha (padre)
padre.color = NEGRO
abuelo.color = ROJO
RotaIzquierda(abuelo)

Caso 4
RotaIzquierda (padre)
padre.color = NEGRO
abuelo.color = ROJO
RotaDerecha(abuelo)

Ejemplo
Insertar en un rbol RN los siguientes

elementos:
10, 85, 15, 70, 20, 60, 30, 50, 65, 80, 90, 40, 5,
55

Resultado

Desempeo
Un rbol Roji-Negro que almacena n elementos tiene

una altura mnima de 1+2|log 2(n)|