template<template< typename > class NodeType, typename Key, class Compare>
class Aleph::Gen_Treap< NodeType, Key, Compare >
Árbol binario de búsqueda aleatorizado genérico tipo Treap.
Un treap es una clase especial de árbol binario de búsqueda en el cual sus operaciones de modificación son aleatorizadas. Consecuentemente, todas las operaciones sobre esta clase de árbol binario son , independientemente de cualquier sesgo que exista acerca del orden de inserción o eliminación de claves.
El treap es probablemente la clase árbol binario de búsqueda que preserva un equilibrio probabilístico con mejor desempeño. Estudios empíricos sugieren que éste es el tipo de árbol binario de búsqueda más rápido.
- Parámetros
-
NodeType | el tipo de nodo que manejará el árbol. Puede ser de tipo TreapNode o TreapNodeVtl según se desee o no tener destructores virtuales. |
Key | el tipo de clave a guardar en los nodos. |
Compare | el criterio de comparación entre las claves de los nodos. |
- Ver también
- Treap Treap_Vtl Treap_Rk Treap_Rk_Vtl
template<template< typename > class NodeType, typename Key, class Compare>
Elimina la clave key del treap.
remove(key) busca la clave key en el treap this y, de encontrarse la clave, elimina el nodo del treap.
- Parámetros
-
- Devuelve
- puntero al nodo recién eliminado si la clave se encuentra en el treap; NULL de lo contrario.
template<template< typename > class NodeType, typename Key, class Compare>
Busca la clave de p en el árbol binario de búsqueda o lo inserta en caso de no encontrarse.
search_or_insert(p) busca en el árbol binario un nodo cuya clave sea KEY(p)
. Si la clave se encuentra, entonces se rerona un puntero al nodo que la alberga. De lo contrario se inserta p en el árbol binario de búsqueda this.
- Parámetros
-
[in] | p | el nodo a buscar o insertar. |
- Devuelve
- puntero al nodo insertado si la clave de p no está contenida dentro del árbol; De lo contrario, se retorna un puntero al nodo dentro del árbol que contiene a
KEY(p)
.