El árbol splay es un árbol binario de búsqueda auto-balanceable que mueve los nodos accedidos recientemente cerca de la raíz para permitir un acceso más rápido en el futuro. Realiza operaciones como búsqueda, inserción y eliminación en tiempo O(log n) mediante la rotación de nodos hacia la raíz después del acceso. Es más simple de implementar que otros árboles auto-balanceables pero tiene un rendimiento promedio igual de eficiente mientras minimiza los requisitos de memoria al no almacenar información
2. Árbol Splay
Un Árbol biselado o Árbol Splay es un Árbol binario de búsqueda auto-balanceable,
con la propiedad adicional de que a los elementos accedidos recientemente se
accederá más rápidamente en accesos posteriores. Realiza operaciones básicas
como pueden ser la inserción, la búsqueda y el borrado en un tiempo del orden de
O(log n).
3. Ventajas
• Los nodos accedidos con más frecuencia se moverán cerca de la raíz donde
podrán ser accedidos más rápidamente.
• Tienen la ventaja de ser consideradamente más simples de implementar que
otros árboles binarios de búsqueda auto-balanceados, como pueden ser los
árboles Rojo-Negro o los árboles AVL, mientras que su rendimiento en el caso
promedio es igual de eficiente.
• No necesitan almacenar ninguna otra información adicional aparte de los propios
datos, minimizando de este modo los requerimientos de memoria.
4. Operaciones
Búsqueda
• La búsqueda de un valor de clave en un árbol biselado tiene la
característica particular de que modifica la estructura del árbol.
• El descenso se efectúa de la misma manera que un árbol binario de
búsqueda, pero si se encuentra un nodo cuyo valor de clave coincide
con el buscado, se realiza una biselación de ese nodo.
• Si no se encuentra, el nodo biselado será aquel que visitamos por
último antes de descartar la búsqueda.
5. Inserción
• Es igual que en el árbol binario de búsqueda con la
salvedad de que se realiza una biselación sobre el
nodo insertado.
• Además, si el valor de clave a insertar ya existe
en el árbol, se bisela el nodo que lo contiene.
6. Extracción
• Esta operación requiere dos biselaciones. Primero se busca el
nodo que contiene el valor de clave que se debe extraer.
• Si no se encuentra, el árbol es biselado en el último nodo
examinado y no se realiza ninguna acción adicional.
• Si se encuentra, el nodo se bisela y se elimina. Con esto el árbol
se queda separado en dos mitades, por lo que hay que seleccionar
un nodo que haga las veces de raíz.
• Al ser un árbol binario de búsqueda y estar todos los valores
de clave ordenados, podemos elegir como raíz el mayor valor
del subárbol izquierdo o el menor valor de clave del derecho.
7. Operación de Biselación
• Esta operación traslada un nodo x, que es el nodo al que se accede, a la raíz .
CASO 1:
Si x es hijo izquierdo de p entonces realizaremos una rotación simple derecha.
En caso de que x sea el derecho la rotación que deberemos realizar es simple
izquierda.
8. CASO 2:
Si x es hijo y nieto izquierdo de p y q, respectivamente.
Entonces debemos realizar rotación doble a la derecha, en caso
de que x sea hijo y nieto derecho de p y q la rotación será
doble izquierda.
9. CASO 3:
En caso de que x sea hijo izquierdo de p y nieto derecho de q
realizaremos una rotación simple derecha en el borde entre x y p
y otra simple izquierda entre x y q. En caso contrario, x sea
hijo derecho y nieto izquierdo de q, la rotaciones simples será
izquierda y después derecha.
10. Bibliografia
• Sleator, D. D., & Tarjan, R. E. (1985). Self-adjusting binary search trees. Journal of
the ACM (JACM), 32(3), 652-686.
• Link: https://dl.acm.org/doi/10.1145/3828.3835
• Tarjan, R. E. (1983). Data Structures and Network Algorithms. Society for
Industrial and Applied Mathematics. Capítulo 9: Splay Trees.
• Link: https://www.cs.princeton.edu/courses/archive/fall03/cs528/handouts/lec-6-
splay.pdf