Los arboles biselados (inglés: splay tree) son árboles binarios de búsqueda que ofrecen en tiempo O(log n) en las operaciones de búsqueda, inserción y eliminación de un nodo.
En un árbol biselado cada vertice contiene a una clave y las claves en el ramo izquierdo son menores que la clave del vértice mismo, mientras a la derecha están las claves mayores.
Las claves son unicas.
La idea básica es que después de acceder a un nodo éste se lleva a la raíz mediante rotaciones.
En cada operación splay se hace ascender al nodo en uno o dos niveles, dependiendo de su orientación relativa respecto de su nodo abuelo.
Un splay mueve el elemento recuperado a la raíz del árbol.
Así, un splay hace que:
- Todos los nodos accedidos durante una consulta luego sean mucho menos costosos de acceder.
- Todos los demás nodos no accedidos, su consulta se empeora sólo un poco.
Ejemplo de Splay (1,S):
Acceder al nodo a; es decir splay(a, root).
Para la búsqueda de un nodo x realiza un splay sobre el árbol:
- Si la localización es exitosa, la salida será un árbol binario de búsqueda con x como raíz.
- Si la localización fracasa, la salida será un árbol binario de búsqueda que tendrá como raíz al nodo en el que la búsqueda fracasó.
Ejemplo: Buscar 7
Para insertar un nodo x en un árbol splay; primero se inserta como si fuera un árbol binario de búsqueda y luego se hace splay en el nodo insertado.
Ejemplo: Insertar 5
- Buscar x.
- Si la raíz no es x, no hay nada que hacer.
- Eliminar el nodo que contiene a x. Quedan dos subárboles I y D.
- Buscar el máximo de I.
- Colocarle D como hijo derecho del máximo.
Ejemplo: Eliminar 6
El Árbol Splay o Árbol Biselado es una más de las representaciones del Árbol Binario de Búsqueda, cuya principal propiedad de biselar los elementos del árbol al realizar las diferentes operaciones. Biselar consiste en ubicar el ultimo dato con el que se interactura en la raíz. Las operaciones que determinan esta propiedad son la inserción en el que de no existir el dato se ubica el nodo con el dato más cercano, donde cada acceso a un dato con lleva a la realización de una operación llamada “biselación”.
La implementación de este tipo de Arboles se realiza utilizando como base el Árbol Binario de Búsqueda, debido a que sus funciones y operaciones son las mismas de dicho Árbol combinadas con una operación básica, llamada “biselación”.
A continuación se presenta el diagrama de clases para el Árbol Splay implementado, con cada una de sus operaciones: