Professional Documents
Culture Documents
Estructura de Datos I
Agenda
2
Estructura de Datos I
SPLAY TREE
Introduccin Bsqueda en une Splay Tree Operaciones Splaying Nodos splayed Redimiento Ejercicios
UNSA - 2011
Introduccin
3 4
(12,A)
Estructura de Datos I
Estructura de Datos I
El resultado del recorrido inorder consiste en una lista ordenada de las claves
(10,N)
(1,C)
(4,H)
(9,P)
(11,U)
(3,R) (5,I)
(6,G) (7,Y)
Inicia igual que en un BST La bsqueda es descendiendo en el rbol en busca del elemento o de un nodo externo. P.e.: buscar la clave 15.
(12,A)
(35,R)
(8,T) (2,Q)
(14,J)
(21,O) (36,L)
(37,P) (40,X)
(10,N)
(1,C)
(4,H)
(9,P)
(11,U)
(3,R) (5,I)
(6,G) (7,Y)
Operaciones
(20,Z)
(12,A) (35,R)
Estructura de Datos I
(10,N)
Estructura de Datos I
(14,J)
rotacin derecha El hijo izquierdo x de un nodo y, se convierte en su padre, y ahora es el hijo derecho de x
y
rotacin izquierda El hijo derecho y de un nodo x, se convierte en su padre, x ahora es el hijo izquierdo de y
x y
(1,C)
(4,H)
(9,P)
(11,U)
x x T3 y T1 T2 T1 T2 T1
(3,R) (5,I)
(6,G) (7,Y) T2
x T3 T3
T3
T1
T2
18/07/2011
Splaying
7
x is a
left-left grandchild (x es hijo izquierdo de su padre, el cual a su vez es hijo izquierdo de su padre) p es padre de x; g es padre de p
y x T4 w
zig
x y w
T4 y x T3
Estructura de Datos I
Estructura de Datos I
T3 T1 T2 T1 T2 T3 T4 T1 T2 x
zig-zig
z y T1 x
zig-zag
z
x y
y T1 z T2 T3 T4
T4 T2 T3
T1
T2
T3
T4
(20,Z)
Ejemplo
9
(12,A)
(35,R)
g p
(8,T) (14,J) (21,O) (37,P)
Ejemplo
10
(40,X)
Dado x = (10,N) x es hijo derecho de su padre, el cual es hijo izquierdo del abuelo Rotacin-izquierda en p, luego rotacin-derecha en g
(20,Z)
(2,Q)
(10,N)
(36,L)
1.
(antes de rotacin)
x
(10,N) (20,Z)
x
(1,C) (4,H) (9,P) (11,U)
(3,R) (5,I)
Estructura de Datos I
g x p
(2,Q) (8,T) (10,N)
(12,A)
(35,R)
Estructura de Datos I
(2,Q)
(9,P)
(14,J)
(36,L)
(40,X)
x
(8,T)
(10,N)
x p
(2,Q) (8,T)
(10,N)
(35,R)
2.
(20,Z)
g
(11,U) (36,L) (40,X) (12,A) (21,O) (37,P)
(1,C)
(4,H)
(11,U)
1.
(3,R) (5,I) (6,G) (7,Y)
(despus de rotar)
(35,R)
(antes de rotar)
(1,C)
(2,Q)
(9,P)
(12,A)
(9,P)
(9,P)
(14,J)
(36,L)
(40,X)
(1,C)
(4,H)
2.
(despus de la 1. rotacin)
(6,G)
(4,H)
(14,J)
(21,O)
(37,P)
(1,C)
(4,H)
(11,U)
3.
(despues de la 2. rotacin) x an no es raz, nuevo splay
(3,R) (5,I)
(6,G) (7,Y)
(11,U)
(36,L)
(40,X)
(3,R) (5,I)
(6,G) (7,Y)
(20,Z)
Ejemplo
11
(12,A)
(35,R)
antes
(8,T) (14,J) (21,O) (10,N) (37,P)
Entonces
12
(40,X)
(2,Q)
(36,L)
(3,R) (5,I)
Un splay tree es un rbol binario de bsqueda donde un nodo es splayed despus de ser accedido (por una bsqueda o una actualizacin)
Estructura de Datos I
(37,P)
Estructura de Datos I
(8,T)
(14,J)
(37,P) (2,Q)
(8,T)
La profundidad de los nodos internos accedidos es splayed El costo del splaying es O(h), donde h is la altura del rbol el cual podra ser O(n) en el peor caso
(2,Q)
(10,N)
(35,R)
(10,N)
(21,O)
(36,L)
(4,H)
(9,P)
(11,U)
(3,R) (5,I)
(6,G) (7,Y)
(3,R) (5,I)
(6,G) (7,Y)
18/07/2011
Nodos splayed
13 14
Estructura de Datos I
Mtodo
Find(k)
Splay node
Si la clave est, aplicar al nodo donde est la clave Si la clave no est, aplicar al padre del nodo externo donde debera estar la clave Aplicar al nuevo nodo que contienen la clave insertada Aplicar al padre del nodo interno que ser eliminado del rbol
Llamamos: rank de un nodo, al logaritmo (base 2) de su tamao. As, el costo de una operacin splay es O(log n). Esto implica, que los splay trees pueden adaptarse a bsquedas con frecuentes requerimientos ms rpido que O(log n) en algunos casos
Insert(k,y) Remove(k)
Ejercicios
15
(20,Z)
(12,A)
(35,R)
(14,J)
Estructura de Datos I
(21,O) (36,L)
(37,P) (40,X)
(10,N)
(4,H)
(9,P)
(11,U)
(3,R) (5,I)
(6,G) (7,Y)