Tipos públicos | |
typedef NodeType< Key > | Node |
El tipo de nodo interno. | |
Métodos públicos | |
Node *& | getRoot () |
Retorna la raíz del treap extendido. | |
Node * | insert (Node *p) |
Insertar el nodo p en el treap extendido this. | |
size_t | position (const Key &key) |
Retorna la posición infija (ordenada) de la clave key. | |
Node * | remove (const size_t &beg, const size_t &end) |
Elimina del treap extendido todas las claves comprendidas entre la posición infija beg y end. | |
Node * | remove (const Key &key) |
Elimina la clave key del treap extendido this. | |
Node * | search (const Key &key) |
Busca la clave key en el treap extendido this. | |
Node * | select (const size_t &i) |
Retorna el nodo cuya posición infija en el treap extendido es i. | |
size_t | size () const |
Retorna la cantidad de nodos que contiene el treap. | |
void | swap (Gen_Treap_Rk &tree) |
Intercambia todos los elementos del treap this con el treap tree en tiempo contante (y extremadamente rápido). |
El carácter "extendido" facilita las siguientes bondades sobre el conjunto de elementos:
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.
En estudios de rendimiento, la clase estándar set<T> y map<T> implantadas mediante el tipo TreapRk demuestran mayor rapidez que las implantaciones gnu y Boost.
Key | el tipo de clave a guardar en los nodos. | |
Compare | el criterio de comparación entre las claves de los nodos. |
Definición en la línea 750 del archivo tpl_treapRk.H.
insert(p) inserta el nodo p en el treap extendido this.
[in] | p | el nodo a insertar. |
Definición en la línea 242 del archivo tpl_treapRk.H.
size_t position | ( | const Key & | key | ) | [inline, inherited] |
position(key) busca en el treap extendido la clave key (lo cual toma tiempo ) y retorna la posición infija del nodo que contiene la clave.
[in] | key | clave a buscar y a determinar posición infija. |
domain_error | si la clave no está contenida en el treap extendido. |
Definición en la línea 400 del archivo tpl_treapRk.H.
Node* remove | ( | const size_t & | beg, | |
const size_t & | end | |||
) | [inline, inherited] |
rmeove(beg,end) elimina del treap extendido this todas las claves entre las posiciones infijas beg y end. Se retorna un arbol que contiene las claves borradas.
[in] | beg | posición infija donde comienza el rango a ser eliminado. |
[in] | end | posición infija donde termina el rango a ser eliminado. |
range_error | si el rango de posiciones infijas es inválido. |
Definición en la línea 349 del archivo tpl_treapRk.H.
Node* remove | ( | const Key & | key | ) | [inline, inherited] |
remove(key) busca la clave key en el treap extendido this y, de encontrarse la clave, elimina el nodo del treap.
[in] | key | clave a eliminar. |
Definición en la línea 322 del archivo tpl_treapRk.H.
Node* select | ( | const size_t & | i | ) | [inline, inherited] |
select(i) retorna el nodo del treap extendido cuya posición infija es i.
[in] | i | posición infija a seleccionar. |
out_of_range | si i es mayor o igual que la cantidad de nodos que contiene el treap. |
Definición en la línea 377 del archivo tpl_treapRk.H.
void swap | ( | Gen_Treap_Rk< NodeType, Key, Compare > & | tree | ) | [inline, inherited] |
[in] | tree | el treap a intercambiar con this |
Definición en la línea 170 del archivo tpl_treapRk.H.