![]() |
Clases | |
class | ArrayHeap |
Heap o cola de prioridad implementada con arreglos. Más... | |
class | Avl_Tree |
Árbol binario de búsqueda AVL con nodos sin destructor virtual. Más... | |
class | Avl_Tree_Vtl |
Árbol binario de búsqueda AVL con destructor virtual en sus nodos. Más... | |
class | BinHeap |
Heap de nodos sin destructor virtual. Más... | |
class | BinHeapVtl |
Heap de nodos con destructor virtual. Más... | |
class | BinNode |
Nodo binario básico. Más... | |
class | BinTree |
Árbol binario de búsqueda sin destructores virtuales en los nodos. Más... | |
class | BinTreeVtl |
Árbol binario de búsqueda con destructores virtuales en los nodos. Más... | |
class | DynBinHeap |
Heap dinámico de elementos de tipo genérico T con criterio de comparación Compare. Más... | |
class | DynMapAvlTree |
Mapeo dinámico implementado con árboles binario de búsqueda AVL. Más... | |
class | DynMapBinTree |
Mapeo dinámico implementado con árboles binario de búsqueda clásicos. Más... | |
class | DynMapRandTree |
Mapeo dinámico implementado con árboles binario de búsqueda aleatorizados. Más... | |
class | DynMapRbTree |
Mapeo dinámico implementado con árboles binario de búsqueda rojo-negro. Más... | |
class | DynMapSplayTree |
Mapeo dinámico implementado con árboles binario de búsqueda splay. Más... | |
class | DynMapTreap |
Mapeo dinámico implementado con árboles binario de búsqueda treaps. Más... | |
class | DynMapTree |
Mapeo genérico instrumentado con árboles binarios de búsqueda. Más... | |
class | DynSetAvlTree |
Conjunto dinámico implementado mediante árboles binarios de búsqueda AVL de tipo Avl_Tree<Key>. Más... | |
class | DynSetBinTree |
Conjunto dinámico implementado mediante árboles binarios de búsqueda de tipo BinTree<Key>. Más... | |
class | DynSetRandTree |
Conjunto dinámico implementado mediante árboles binarios de búsqueda aleatorios de tipo Rand_Tree<Key>. Más... | |
class | DynSetRbTree |
Conjunto dinámico implementado mediante árboles binarios de búsqueda aleatorios treaps de tipo Rb_Tree<Key>. Más... | |
class | DynSetSplayTree |
Conjunto dinámico implementado mediante árboles binarios de búsqueda splay de tipo Splay_Tree<Key>. Más... | |
class | DynSetTreap |
Conjunto dinámico implementado mediante árboles binarios de búsqueda aleatorios treaps de tipo Treap<Key>. Más... | |
class | DynSetTree |
Conjunto dinámico de elementos de tipo genérico T implementado mediante una clase de árboles binarios. Más... | |
class | Gen_Avl_Tree |
Árbol binario de búsqueda AVL. Más... | |
class | Gen_Rand_Tree |
Árbol binario de búsqueda aleatorizado genérico. Más... | |
class | Gen_Rb_Tree |
Árbol binario de búsqueda rojo-negro. Más... | |
class | Gen_Splay_Tree |
Árbol binario de búsqueda splay. Más... | |
class | Gen_Treap |
Árbol binario de búsqueda aleatorizado genérico tipo Treap. Más... | |
class | Gen_Treap_Rk |
Árbol binario extendido de búsqueda aleatorizado genérico de tipo Treap. Más... | |
class | Gen_Treap_Rk::Iterator |
Iterador sobre los nodos de un treap extendido. Más... | |
class | GenBinHeap |
Heap genérico de nodos. Más... | |
class | GenBinTree |
Árbol binario de búsqueda. Más... | |
class | Huffman_Decoder_Engine |
Decodificador de Huffman. Más... | |
class | Huffman_Encoder_Engine |
Codificador de Huffman. Más... | |
class | map |
Implementación Aleph del tipo estándar map<T> basada en árboles binarios de búsqueda con rangos. Más... | |
class | map::iterator |
Iterador sobre un mapeo. Más... | |
class | multiset |
Implementación Aleph del tipo estándar multiset<T> basada en árboles binarios de búsqueda con rangos. Más... | |
class | multiset::iterator |
Iterador sobre un multi-conjunto (multiset). Más... | |
class | priority_queue |
Implantación Aleph del contenedor estándar prority_queue<T>. Más... | |
class | Rand_Tree |
Árbol binario de búsqueda aleatorizado de nodos sin destructor virtual. Más... | |
class | Rand_Tree_Vtl |
Árbol binario de búsqueda aleatorizado de nodos con destructor virtual. Más... | |
struct | Rb_Tree |
Árbol binario de búsqueda rojo-negro con nodos sin destructor virtual. Más... | |
struct | Rb_Tree_Vtl |
Árbol binario de búsqueda rojo-negro con destructor virtual en sus nodos. Más... | |
class | set |
Implementación Aleph del tipo estándar set<T> basada en árboles binarios de búsqueda con rangos. Más... | |
class | set::iterator |
Iterador sobre un conjunto. Más... | |
struct | Splay_Tree |
Árbol binario de búsqueda splay con nodos sin destructor virtual. Más... | |
struct | Splay_Tree_Vtl |
Árbol binario de búsqueda splay sin destructor virtual en sus nodos. Más... | |
class | Treap |
Árbol binario de búsqueda aleatorizado genérico de tipo treap con nodos sin destructor virtual. Más... | |
class | Treap_Rk |
Árbol binario extendido de búsqueda aleatorizado genérico de tipo Treap con nodos sin destructor virtual. Más... | |
class | Treap_Rk_Vtl |
Árbol binario extendido de búsqueda aleatorizado genérico de tipo Treap con destructor virtual en sus nodos. Más... | |
class | Treap_Vtl |
Árbol binario de búsqueda aleatorizado genérico de tipo Treap con destructor virtual en sus nodos. Más... | |
class | Tree_Node |
Árboles m-rios genéricos. Más... | |
Definiciones | |
#define | COUNT(p) ((p)->getCount()) |
Retorna la cardinalidad del árbol con raíz p en un árbol con rangos. | |
#define | DECLARE_BINNODE(Name, height, Control_Data) |
Declara nodos binarios de nombre Name<Key>. | |
#define | DECLARE_BINNODE_SENTINEL(Name, height, Control_Data) |
Declara nodos binarios de nombre Name<Key> con nodos centinelas. | |
#define | KEY(p) ((p)->get_key()) |
Referencia modificable a la clave del nodo binario. | |
#define | LLINK(p) ((p)->getL()) |
Puntero al subárbol izquierdo. | |
#define | RLINK(p) ((p)->getR()) |
Puntero al subárbol derecho. | |
Funciones | |
template<class TNode, class BNode> | |
TNode * | bin_to_forest (BNode *broot) |
Convierte un árbol binario a su arborescencia equivalente. | |
BinNode () | |
Constructor vacío. | |
template<class Node, typename Key> | |
Node * | build_optimal_tree (Key keys[], double p[], const int &n) |
Construye un árbol binario de búsqueda óptimo según frecuencias estimadas de búsqueda. | |
template<template< class > class Node, typename Key> | |
Node< Key > * | build_tree (DynArray< Key > &preorder, const int &l_p, const int &r_p, DynArray< Key > &inorder, const int &l_i, const int &r_i) |
Reconstruye un árbol binario a partir de sus recorridos prefijo e infijo. | |
template<class Node, class Compare> | |
bool | check_binary_search_tree (Node *node) |
Verifica consistencia de un árbol binario de búsqueda. | |
template<class Node> | |
size_t | compute_cardinality_rec (Node *node) |
Cuenta la cantidad de nodos de un árbol binario. | |
template<class Node> | |
size_t | compute_height (Node *root) |
Calcula la altura del árbol root. | |
template<class Node> | |
void | compute_nodes_in_level (Node *root, const int &level, DynDlist< Node * > &list) |
Calcula la cantidad de nodos que tiene un nivel. | |
template<class Node> | |
size_t | computeHeightRec (Node *node) |
Calcula la altura de un árbol binario. | |
template<class Node> | |
Node * | copyRec (Node *src_root) throw (std::exception, std::bad_alloc) |
Copia recursiva de un árbol binario. | |
template<class Node> | |
void | destroy_forest (Node *root) |
Destruye (libera memoria) la arborescencia cuya primer árbol es root. | |
template<class Node> | |
void | destroy_tree (Node *root) |
Destruye (libera memoria) el árbol cuya raíz es root. | |
template<class Node> | |
void | destroyRec (Node *root) |
Destrucción de un árbol binario. | |
template<class Node> | |
Node * | deway_search (Node *root, int path[], const size_t &size) |
Retorna un nodo de una arborescencia dado su número de Deway. | |
template<class Node> | |
Node * | find_max (Node *root) |
Encuentra el máximo elemento en un árbol binario de búsqueda. | |
template<class Node> | |
Node * | find_min (Node *root) |
Encuentra el mínimo elemento en un árbol binario de búsqueda. | |
template<class Node> | |
Node * | find_predecessor (Node *p, Node *&pp) |
Encuentra el nodo predecesor infijo de p. | |
template<class Node> | |
Node * | find_successor (Node *p, Node *&pp) |
Encuentra el nodo sucesor infijo de p. | |
template<class Node> | |
void | forest_postorder_traversal (Node *root, void(*visitFct)(Node *, int, int)) |
Recorre en sufijo una arborescencia. | |
template<class Node> | |
void | forest_preorder_traversal (Node *root, void(*visitFct)(Node *, int, int)) |
Recorre en prefijo una arborescencia. | |
template<class TNode, class BNode> | |
BNode * | forest_to_bin (TNode *root) |
Convierte una arborescencia a su árbol binario equivalente. | |
template<typename Node, class Write> | |
void | generate_forest (Node *root, std::ofstream &out=std::cout) |
Genera una entrada para el programa de dibujado de árboles ntrepic. | |
template<typename Node, class Write> | |
void | generate_tree (Node *root, std::ofstream &out, const int &tree_number=0) |
Genera una entrada para el programa de dibujado de árboles ntrepic. | |
template<class Node, class Compare> | |
size_t | inorder_position (Node *r, const typename Node::key_type &key, Node *&node) |
Determina la posición infija de una clave en un árbol con rangos. | |
template<class Node> | |
int | inOrderRec (Node *root, void(*visitFct)(Node *, int, int)) |
Recorre recursivamente en infijo un árbol binario. | |
template<class Node> | |
size_t | inOrderStack (Node *node, void(*visitFct)(Node *, int, int)) |
Recorre en infijo un árbol binario. | |
template<class Node> | |
void | inOrderThreaded (Node *root, void(*visitFct)(Node *)) |
Recorre en infijo un árbol binario sin usar recursión o pila explícita. | |
template<class Node, class Compare> | |
Node * | insert_by_key_xt (Node *&r, Node *p) |
Inserta un nodo en un árbol binario de búsqueda con rangos por substitución de un nodo externo. | |
template<class Node> | |
void | insert_by_pos_xt (Node *&r, Node *p, const size_t &pos) |
Inserta un nodo en un árbol binario con rangos. | |
template<class Node, class Compare> | |
Node * | insert_in_binary_search_tree (Node *&root, Node *p) |
Inserta un nodo en un árbol binario de búsqueda por substitución de un nodo externo. | |
template<class Node, class Compare> | |
Node * | insert_root (Node *&root, Node *p) |
Inserta un nodo como raíz en un árbol binario de búsqueda mediante el algoritmo de partición. | |
template<class Node, class Key, class Compare> | |
Node * | insert_root_rec (Node *root, Node *p) |
Inserta un nodo como raíz en un árbol binario de búsqueda mediante retroceso recursivo y rotaciones hasta la raíz. | |
template<class Node, class Compare> | |
Node * | insert_root_xt (Node *&root, Node *p) |
Inserta un nodo como raíz en un árbol binario de búsqueda con rangos. | |
template<class Node> | |
size_t | internal_path_length (Node *p) |
Calcula la longitud del camino interno de un árbol binario. | |
template<class Node, class Compare> | |
Node * | join (Node *t1, Node *t2, Node *&dup) |
Unión de dos árboles binarios de búsqueda. | |
template<class Node> | |
Node * | join_exclusive (Node *&ts, Node *&tg) |
Unión exclusiva de dos árboles binarios de búsqueda. | |
template<class Node> | |
Node * | join_exclusive_xt (Node *&ts, Node *&tg) |
Unión exclusiva de dos árboles binarios de búsqueda con rangos. | |
template<class Node, class Compare> | |
Node * | join_preorder (Node *t1, Node *t2, Node *&dup) |
Unión de dos árboles binarios de búsqueda según algoritmo prefijo. | |
template<class Node> | |
void | levelOrder (Node *root, void(*visitFct)(Node *, int, bool), const size_t &queue_size) |
Recorre por niveles un árbol binario. | |
template<class Node> | |
int | postOrderRec (Node *root, void(*visitFct)(Node *, int, int)) |
Recorre recursivamente en sufijo un árbol binario. | |
template<class Node> | |
Node * | preorder_to_binary_search_tree (DynArray< typename Node::key_type > &preorder, const int &l, const int &r) |
Reconstruye un árbol binario de búsqueda a partir de su recorrido prefijo. | |
template<class Node> | |
int | preOrderRec (Node *root, void(*visitFct)(Node *, int, int)) |
Recorre recursivamente en prefijo un árbol binario. | |
template<class Node> | |
size_t | preOrderStack (Node *node, void(*visitFct)(Node *, int, int)) |
Recorre en prefijo un árbol binario. | |
template<class Node> | |
void | preOrderThreaded (Node *node, void(*visitFct)(Node *)) |
Recorre en prefijo un árbol binario sin usar recursión o pila explícita. | |
Node * | random_join_exclusive (Node *tl, Node *tr) |
Unión exclusiva aleatoria de dos árboles binarios de búsqueda, exclusivos, con rangos. | |
template<class Node, class Compare> | |
Node * | remove_by_key_xt (Node *&root, const typename Node::key_type &key) |
Elimina una clave de un árbol binario de búsqueda con rangos mediante la unión exclusiva. | |
template<class Node> | |
Node * | remove_by_pos_xt (Node *&root, const size_t &pos) |
Elimina un nodo de un árbol binario de búsqueda con rangos en la posición pos. | |
template<class Node, class Compare> | |
Node * | remove_from_search_binary_tree (Node *&root, const typename Node::key_type &key) |
Elimina una clave de un árbol binario de búsqueda mediante la unión exclusiva. | |
template<class Node> | |
Node * | rotate_to_left (Node *p, Node *pp) |
Rotación a la izquierda con actualización del padre. | |
template<class Node> | |
Node * | rotate_to_left (Node *p) |
Rota hacia la izquierda el árbol binario con raíz p. | |
template<class Node> | |
Node * | rotate_to_left_xt (Node *p) |
Rota hacia la izquierda el árbol binario con rangos de raíz p. | |
template<class Node> | |
Node * | rotate_to_right (Node *p) |
Rota hacia la derecha el árbol binario con raíz p. | |
template<class Node> | |
Node * | rotate_to_right_xt (Node *p) |
Rota hacia la derecha el árbol binario con rangos de raíz p. | |
template<class Node, class Equal> | |
Node * | search_deway (Node *root, const typename Node::key_type &key, int deway[], const size_t &size, size_t &n) |
Busca key en arborescencia y calcula el número de Deway del nodo contentivo de la clave key. | |
template<class Node, class Compare> | |
Node * | search_parent (Node *root, const typename Node::key_type &key, Node *&parent) |
Búsqueda de clave en árbol binario de búsqueda con determinación del padre. | |
template<class Node, class Compare> | |
Node * | search_rank_parent (Node *root, const typename Node::key_type &key) |
Búsqueda fallida de nodo y determinación del padre. | |
template<class Node, class Compare> | |
Node * | searchInBinTree (Node *root, const typename Node::key_type &key) |
Busca una clave en un árbol binario de búsqueda. | |
template<class Node> | |
Node * | select (Node *r, const size_t &pos) throw (std::exception, std::out_of_range) |
Selecciona un nodo de un árbol binario según su posición infija. | |
template<class Node> | |
Node * | select_gotoup_root (Node *root, const size_t &i) |
Selecciona un nodo de un árbol binario según su posición infija y lo convierte en su raíz. | |
template<class Node> | |
Node * | select_rec (Node *r, const size_t &i) throw (std::exception, std::out_of_range) |
Selecciona un nodo de un árbol binario según su posición infija. | |
template<class Node> | |
size_t | simple_preOrderStack (Node *node, void(*visitFct)(Node *, int, int)) |
Recorre en prefijo un árbol binario. | |
template<class Node, class Key, class Compare> | |
void | split_key (Node *root, const Key &key, Node *&l, Node *&r) |
Particiona iterativamente un árbol binario de búsqueda según una clave. | |
template<class Node, class Compare> | |
bool | split_key_rec (Node *root, const typename Node::key_type &key, Node *&ts, Node *&tg) |
Particiona recursivamente un árbol binario de búsqueda según una clave. | |
template<class Node, class Compare> | |
bool | split_key_rec_xt (Node *root, const typename Node::key_type &key, Node *&l, Node *&r) |
Particiona un árbol binario de búsqueda con rangos según una clave. | |
template<class Node> | |
void | split_pos_rec (Node *r, const size_t &i, Node *&ts, Node *&tg) |
Particiona un árbol binario con rangos en la posición i. | |
template<class Node> | |
void | swap_node_with_predecessor (Node *p, Node *&pp, Node *q, Node *&pq) |
Intercambia a nivel de enlaces un nodo con su predecesor. | |
template<class Node> | |
void | swap_node_with_successor (Node *p, Node *&pp, Node *q, Node *&pq) |
Intercambia a nivel de enlaces un nodo con su sucesor. | |
template<class Node> | |
void | tree_postorder_traversal (Node *root, void(*visitFct)(Node *, int, int)) |
Recorre en sufijo un árbol. | |
template<class Node> | |
void | tree_preorder_traversal (Node *root, void(*visitFct)(Node *, int, int)) |
Recorre en prefijo un árbol. |
En el discurso sobre las funciones, el árbol Tree_Node se menciona como "árbol" o "arborescencia", mientras que BinNode como "árbol binario".
Prácticamente, la mayoría de las funciones parametrizan bajo el tipo genérico Node el tipo de nodo del árbol. Este debe ser derivado de Tree_Node si se trata de un árbol o arborescencia o de BinNode si es un árbol binario.
#define COUNT | ( | p | ) | ((p)->getCount()) |
p | puntero a un nodo con rangos. |
Definición en la línea 74 del archivo tpl_binNodeXt.H.
Referenciado por set::empty(), multiset::empty(), Gen_Treap_Rk::Iterator::get_current_position(), Gen_Treap_Rk::Iterator::has_current(), Aleph::inorder_position(), Gen_Rand_Tree< Aleph::RandNodeVtl< Key >, Key, Compare >::insert(), Aleph::insert_by_key_xt(), Aleph::insert_by_pos_xt(), Aleph::insert_root_xt(), Aleph::join_exclusive_xt(), Gen_Rand_Tree< Aleph::RandNodeVtl< Key >, Key, Compare >::random_insert(), Gen_Rand_Tree< Aleph::RandNodeVtl< Key >, Key, Compare >::random_join_exclusive(), Gen_Rand_Tree< Aleph::RandNodeVtl< Key >, Key, Compare >::random_remove(), Gen_Treap_Rk< Aleph::Treap_Rk_Node< Key >, Key, Compare >::remove(), Aleph::remove_by_key_xt(), Aleph::remove_by_pos_xt(), Gen_Treap_Rk::Iterator::reset_last(), Aleph::rotate_to_left_xt(), Aleph::rotate_to_right_xt(), Aleph::select(), Aleph::select_gotoup_root(), Aleph::select_rec(), Gen_Treap_Rk< Aleph::Treap_Rk_Node< Key >, Key, Compare >::size(), set::size(), map::size(), Aleph::split_key_rec_xt(), y Aleph::split_pos_rec().
#define DECLARE_BINNODE | ( | Name, | |||
height, | |||||
Control_Data | ) |
Valor:
INIT_CLASS_BINNODE(Name, height, Control_Data) \ }; \ \ template <typename Key> Name<Key> * const Name<Key>::NullPtr = NULL; \ \ INIT_CLASS_BINNODE(Name##Vtl, height, Control_Data) \ virtual ~Name##Vtl() { /* empty */ } \ }; \ \ template <typename Key> Name##Vtl<Key> * const Name##Vtl<Key>::NullPtr = NULL
Las clases generadas tienen un atributo clave llamado key y asequible mediante Key(p), donde p es un puntero a nodo.
Cada clase de nodo binario posee dos tipos de atributos estáticos:
Name | el nombre del nodo binario. | |
height | máxima altura que puede tener un árbol binario. | |
Control_Data | datos que se almacenan en el nodo según la índole de su uso. |
Definición en la línea 168 del archivo tpl_binNode.H.
#define DECLARE_BINNODE_SENTINEL | ( | Name, | |||
height, | |||||
Control_Data | ) |
Valor:
INIT_CLASS_BINNODE(Name, height, Control_Data) \ Name(SentinelCtor) : \ Control_Data(sentinelCtor), lLink(NullPtr), rLink(NullPtr) {}\ static Name sentinel_node; \ }; \ \ template <typename Key> \ Name<Key> Name<Key>::sentinel_node(sentinelCtor); \ \ template <typename Key> \ Name<Key> * const Name<Key>::NullPtr = &Name<Key>::sentinel_node;\ \ INIT_CLASS_BINNODE(Name##Vtl, height, Control_Data) \ virtual ~Name##Vtl() { /* empty */ } \ private: \ Name##Vtl(SentinelCtor) : \ Control_Data(sentinelCtor), lLink(NullPtr), rLink(NullPtr) {}\ static Name##Vtl sentinel_node; \ }; \ \ template <typename Key> \ Name##Vtl<Key> Name##Vtl<Key>::sentinel_node(sentinelCtor); \ \ template <typename Key> \ Name##Vtl<Key> * const Name##Vtl<Key>::NullPtr = \ &Name##Vtl<Key>::sentinel_node
Las clases generadas instancian un nodo centinela bajo con un constructor con parámetros de tipo SentinelCtor. Este es el constructor del nodo centinela y debe ser especificado por el diseñador del nodo.
Las clases generadas tienen un atributo clave llamado key y asequible mediante Key(p), donde p es un puntero a nodo.
Cada clase de nodo binario posee dos tipos de atributos estáticos:
Name | el nombre del nodo binario. | |
height | máxima altura que puede tener un árbol binario. | |
Control_Data | datos que se almacenan en el nodo según la índole de su uso. |
Definición en la línea 213 del archivo tpl_binNode.H.
TNode* Aleph::bin_to_forest | ( | BNode * | broot | ) | [inline] |
bin_to_forest(root) toma un árbol binario derivado de BinNode y lo convierte a su arborescencia equivalente.
La rutina maneja dos parámetros tipo:
El procedimiento asume que ambos tipos comparten el mismo tipo de clave.
[in] | broot | raíz del árbol binario a convertir. |
bad_alloc | si no hay suficiente memoria. |
Definición en la línea 928 del archivo tpl_tree_node.H.
Hace referencia a KEY.
Node* Aleph::build_optimal_tree | ( | Key | keys[], | |
double | p[], | |||
const int & | n | |||
) | [inline] |
build_optimal_tree(keys,p,n) construye un árbol binario de búsqueda óptimo que contiene n claves almacenadas en el arreglo keys[], cada clave con frecuencia o probabilidad de búsqueda almacenada en el arreglo p[], paralelo a keys[].
[in] | keys | arreglo contentivo de las claves. |
[in] | p | arreglos contentivo de las probabilidades de aparición o búsqueda. |
[in] | n | cantidad total de claves; esta es la dimensión de los arreglos. |
bad_alloc | si no hay suficiente memoria. |
Definición en la línea 142 del archivo opBinTree.H.
Node<Key>* Aleph::build_tree | ( | DynArray< Key > & | preorder, | |
const int & | l_p, | |||
const int & | r_p, | |||
DynArray< Key > & | inorder, | |||
const int & | l_i, | |||
const int & | r_i | |||
) | [inline] |
build_tree() toma dos arreglos dinámicos contentivos de los recorridos prefijo e infijo de un árbol y reconstruye el árbol que ocasiona los recorridos en cuestión.
[in] | preorder | arreglo contentivo del recorrido prefijo. |
[in] | l_p | comienzo del recorrido prefijo en el arreglo preorder. |
[in] | r_p | final del recorrido prefijo en el arreglo preorder. |
[in] | inorder | arreglo contentivo del recorrido infijo. |
[in] | l_i | comienzo del recorrido infijo en el arreglo inorder. |
[in] | r_i | final del recorrido infijo en el arreglo inorder. |
bad_alloc | si no hay suficiente memoria. |
Definición en la línea 663 del archivo tpl_binNodeUtils.H.
bool check_binary_search_tree | ( | Node * | node | ) | [inline] |
check_binary_search_tree(node) verifica si el árbol binario con raíz node satisface la propiedad de orden de un árbol binario de búsqueda para el criterio de comparación Compare()().
[in] | node | raíz del árbol binario a verificar. |
Definición en la línea 915 del archivo tpl_binNodeUtils.H.
size_t Aleph::compute_cardinality_rec | ( | Node * | node | ) | [inline] |
compute_cardinality_rec(node) todo el árbol con raíz node y contabiliza la cantidad de nodos.
[in] | node | raíz del árbol a calcular la cardinalidad. |
Definición en la línea 434 del archivo tpl_binNodeUtils.H.
size_t Aleph::compute_height | ( | Node * | root | ) | [inline] |
[in] | root | raíz del árbol. |
Definición en la línea 680 del archivo tpl_tree_node.H.
void Aleph::compute_nodes_in_level | ( | Node * | root, | |
const int & | level, | |||
DynDlist< Node * > & | list | |||
) | [inline] |
compute_nodes_in_level(root,level,list) guarda en la lista dinámica list los nodos del nivel level en el árbol cuya raíz es root.
[in] | root | raíz del árbol binario. |
[in] | level | el nivel que se desea contabilizar. |
[out] | list | lista dinámica de nodos situados en el nivel level. |
bad_alloc | si no hay suficiente memoria. |
Definición en la línea 741 del archivo tpl_binNodeUtils.H.
size_t Aleph::computeHeightRec | ( | Node * | node | ) | [inline] |
computeHeightRec(node) calcula la altura de todo el árbol con raíz node.
[in] | node | raíz del árbol a calcular altura. |
Definición en la línea 452 del archivo tpl_binNodeUtils.H.
Hace referencia a LLINK, y RLINK.
Referenciado por DynSetTree< Aleph::Splay_Tree< Key, Compare >, Key, Compare >::height(), y DynMapTree< Aleph::Avl_Tree< Key, Compare >, Key, Type, Compare >::height().
Node* Aleph::copyRec | ( | Node * | src_root | ) | throw (std::exception, std::bad_alloc) [inline] |
copyRec(src_root) retorna una copia entera del árbol binario con raíz node.
[in] | src_root | raíz del árbol a copiar. |
bad_alloc | si no hay suficiente memoria. |
Definición en la línea 473 del archivo tpl_binNodeUtils.H.
Hace referencia a Aleph::destroyRec(), LLINK, y RLINK.
Referenciado por DynMapTree< Aleph::Avl_Tree< Key, Compare >, Key, Type, Compare >::DynMapTree(), map::map(), DynMapTree< Aleph::Avl_Tree< Key, Compare >, Key, Type, Compare >::operator=(), set::operator=(), map::operator=(), y set::set().
void Aleph::destroy_forest | ( | Node * | root | ) | [inline] |
destroy_forest(root) libera toda la memoria ocupada por el la arborescencia cuyo primer árbol tiene raíz root.
[in] | root | raíz del primer árbol de la arborescencia que se desea destruir. |
domain_error | si root no es nodo raíz del árbol más a la izquierda de la arborescencia. |
Definición en la línea 652 del archivo tpl_tree_node.H.
Hace referencia a Aleph::destroy_tree().
void Aleph::destroy_tree | ( | Node * | root | ) | [inline] |
destroy_tree(root) libera toda la memoria ocupada por el árbol cuya raíz es root.
[in] | root | raíz del árbol que se desea liberar. |
Definición en la línea 621 del archivo tpl_tree_node.H.
Referenciado por Aleph::destroy_forest().
void Aleph::destroyRec | ( | Node * | root | ) | [inline] |
destroyRec(root) destruye (libera toda la memoria) del árbol binario cuya raíz es root.
[in] | root | raíz del árbol a destruir. |
Definición en la línea 509 del archivo tpl_binNodeUtils.H.
Hace referencia a LLINK, y RLINK.
Referenciado por set::clear(), multiset::clear(), map::clear(), Aleph::copyRec(), DynMapTree< Aleph::Avl_Tree< Key, Compare >, Key, Type, Compare >::empty(), set::erase(), map::erase(), DynMapTree< Aleph::Avl_Tree< Key, Compare >, Key, Type, Compare >::operator=(), set::operator=(), multiset::operator=(), map::operator=(), DynMapTree< Aleph::Avl_Tree< Key, Compare >, Key, Type, Compare >::~DynMapTree(), DynSetTree< Aleph::Splay_Tree< Key, Compare >, Key, Compare >::~DynSetTree(), map::~map(), multiset::~multiset(), y set::~set().
Node* Aleph::deway_search | ( | Node * | root, | |
int | path[], | |||
const size_t & | size | |||
) | [inline] |
deway_search(root,path,size) toma el número de Deway guardado en path, de longitud size y busca en la arborescencia cuyo primer árbol es root un nodo que se corresponda con el número de Deway dado.
[in] | root | raíz del primer árbol de la arborescencia. |
[in] | path | arreglo que contiene el número de Deway. |
[in] | size | tamaño del número de deway. |
Definición en la línea 729 del archivo tpl_tree_node.H.
Node* Aleph::find_max | ( | Node * | root | ) | [inline] |
find_max(root) retorna el máximo elemento del árbol binario de búsqueda cuya raíz es root.
[in] | root | raíz del árbol binario de búsqueda. |
Definición en la línea 1054 del archivo tpl_binNodeUtils.H.
Hace referencia a RLINK.
Node* Aleph::find_min | ( | Node * | root | ) | [inline] |
find_min(root) retorna el mínimo elemento del árbol binario de búsqueda cuya raíz es root.
[in] | root | raíz del árbol binario de búsqueda. |
Definición en la línea 1033 del archivo tpl_binNodeUtils.H.
Hace referencia a LLINK.
Node* Aleph::find_predecessor | ( | Node * | p, | |
Node *& | pp | |||
) | [inline] |
find_predecessor(p,pp) busca el nodo predecesor dentro de la secuencia infija del nodo p.
[in] | p | puntero a nodo del cual se desea conocer su predecesor infijo. |
[out] | pp | puntero al padre del predecesor. |
Definición en la línea 1105 del archivo tpl_binNodeUtils.H.
Node* Aleph::find_successor | ( | Node * | p, | |
Node *& | pp | |||
) | [inline] |
find_successor(p,pp) busca el nodo sucesor dentro de la secuencia infija del nodo p.
[in] | p | puntero a nodo del cual se desea conocer su sucesor infijo. |
[out] | pp | puntero al padre del sucesor. |
Definición en la línea 1075 del archivo tpl_binNodeUtils.H.
void Aleph::forest_postorder_traversal | ( | Node * | root, | |
void(*)(Node *, int, int) | visitFct | |||
) | [inline] |
forest_postorder_traversal((root,visit) realiza un recorrido sufijo sobre el árbol con raíz root. Si visitFct es especificado, entonces, por cada nodo visitado, se invoca la función.
La función de vista tiene la siguiente especificación:
void (*visitFct)(Node* p, int level, int pos)
Donde:
[in] | root | raíz del árbol a visitar. |
[in] | visitFct | puntero a la función de visita. |
domain_error | si root no es nodo raíz del árbol más a la izquierda de la arborescencia. |
Definición en la línea 592 del archivo tpl_tree_node.H.
void Aleph::forest_preorder_traversal | ( | Node * | root, | |
void(*)(Node *, int, int) | visitFct | |||
) | [inline] |
forest_preorder_traversal((root,visit) realiza un recorrido prefijo sobre la arborescencia root. Si visitFct es especificado, entonces, por cada nodo visitado, se invoca la función.
La función de vista tiene la siguiente especificación:
void (*visitFct)(Node* p, int level, int pos)
Donde:
[in] | root | raíz del árbol primer árbol en la arborescencia. |
[in] | visitFct | puntero a la función de visita. |
domain_error | si root no es un nodo raíz de un árbol. |
Definición en la línea 511 del archivo tpl_tree_node.H.
BNode* Aleph::forest_to_bin | ( | TNode * | root | ) | [inline] |
forest_to_bin(root) toma una arborescencia derivada de Tree_Node y lo convierte a su equivalente árbol binario.
La rutina maneja dos parámetros tipo:
El procedimiento asume que ambos tipos comparten el mismo tipo de clave.
[in] | root | raíz del primer árbol perteneciente a la arborescencia a convertir. |
bad_alloc | si no hay suficiente memoria. |
Definición en la línea 862 del archivo tpl_tree_node.H.
void Aleph::generate_forest | ( | Node * | root, | |
std::ofstream & | out = std::cout | |||
) | [inline] |
generate_forest(root, out, tree_number) genera una especificación de dibujado de la arborescencia cuyo primer árbol es root para el programa de dibujado ntreepic. La salida es escrita en el archivo asociado a out.
Para escribir el contenido del nodo, la rutina usa la clase parametrizada Write, cuyo operador Write()(nodo) transforma la clave contenida en el nodo a la cadena que se desea sea escrita como contenido del nodo.
[in] | root | raíz del árbol a dibujar. |
[out] | out | archivo asociado donde se desea escribir la especificación de dibujado. |
Definición en la línea 161 del archivo generate_tree.H.
void Aleph::generate_tree | ( | Node * | root, | |
std::ofstream & | out, | |||
const int & | tree_number = 0 | |||
) | [inline] |
generate_tree(root, out, tree_number) genera una especificación de dibujado del árbol con raíz root para el programa de dibujado ntreepic. La salida es escrita en el archivo asociado a out.
Para escribir el contenido del nodo, la rutina usa la clase parametrizada Write, cuyo operador Write()(nodo) transforma la clave contenida en el nodo a la cadena que se desea sea escrita como contenido del nodo.
[in] | root | raíz del árbol a dibujar. |
[out] | out | archivo asociado donde se desea escribir la especificación de dibujado. |
[in] | tree_number | para uso interno NO USAR. |
Definición en la línea 116 del archivo generate_tree.H.
int inorder_position | ( | Node * | r, | |
const typename Node::key_type & | key, | |||
Node *& | node | |||
) | [inline] |
inorder_position(r,key,node) busca key en el árbol binario de búsqueda con rangos cuya raíz es r. Si la clave es encontrada, entonces la rutina retorna la posición del nodo que alberga la clave y almacena un puntero al nodo en el parámetro node.
La rutina emplea el criterio de comparación expresado por la clase Compare. Una versión especializada asume como criterio la relación "menor que".
[in] | r | raíz del árbol binario de búsqueda con rangos. |
[in] | key | clave a buscar y determinar posición infija |
[out] | node | puntero al nodo contentivo de la clave key(si fue encontrado). |
domain_error | si la clave no se encuentra en el árbol binario con rangos. |
Definición en la línea 184 del archivo tpl_binNodeXt.H.
Hace referencia a COUNT, KEY, LLINK, y RLINK.
Referenciado por Gen_Treap_Rk< Aleph::Treap_Rk_Node< Key >, Key, Compare >::position(), y Gen_Treap_Rk::Iterator::reset_to_key().
int Aleph::inOrderRec | ( | Node * | root, | |
void(*)(Node *, int, int) | visitFct | |||
) | [inline] |
inOrderRec(root,visit) realiza un recorrido infijo sobre el árbol binario con raíz root. Si visitFct es especificado, entonces, por cada nodo visitado, se invoca la función.
La función de vista tiene la siguiente especificación:
void (*visitFct)(Node* p, int level, int pos)
Donde:
[in] | root | raíz del árbol a visitar. |
[in] | visitFct | puntero a la función de visita. |
Definición en la línea 94 del archivo tpl_binNodeUtils.H.
Referenciado por DynSetTree< Aleph::Splay_Tree< Key, Compare >, Key, Compare >::for_each(), y DynMapTree< Aleph::Avl_Tree< Key, Compare >, Key, Type, Compare >::for_each_in_inorder().
size_t Aleph::inOrderStack | ( | Node * | node, | |
void(*)(Node *, int, int) | visitFct | |||
) | [inline] |
inOrderStack(root,visit) realiza un recorrido infijo sobre el árbol binario con raíz root. Si visitFct es especificado, entonces, por cada nodo visitado, se invoca la función.
La función de vista tiene la siguiente especificación:
void (*visitFct)(Node* p, int level, int pos)
Donde:
En lugar de apelar a la recursión, esta versión del recorrido infijo utiliza una pila interna, vectorial, de capacidad máxima Node::MaxHeight.
[in] | node | raíz del árbol a visitar. |
[in] | visitFct | puntero a la función de visita. |
Definición en la línea 341 del archivo tpl_binNodeUtils.H.
Hace referencia a ArrayStack::is_empty(), LLINK, ArrayStack::pop(), ArrayStack::push(), RLINK, y ArrayStack::size().
void Aleph::inOrderThreaded | ( | Node * | root, | |
void(*)(Node *) | visitFct | |||
) | [inline] |
inOrderThreaded(root,visit) realiza un recorrido infijo sobre el árbol binario con raíz root. Si visitFct es especificado, entonces, por cada nodo visitado, se invoca la función.
La función de vista tiene la siguiente especificación:
void (*visitFct)(Node* p, int level, int pos)
Donde:
Esta versión del recorrido infijo no consume espacio en pila.
[in] | root | raíz del árbol a visitar. |
[in] | visitFct | puntero a la función de visita. |
Definición en la línea 773 del archivo tpl_binNodeUtils.H.
Node * insert_by_key_xt | ( | Node *& | r, | |
Node * | p | |||
) | [inline] |
insert_by_key_xt(root, p) inserta el nodo p en el árbol binario de búsqueda con rangos cuya raíz es root según el criterio de comparación Compare()().
Una versión especializada usa como criterio de comparación la relación "menor que".
[in,out] | r | la raíz del árbol binario de búsqueda. |
[in] | p | el nodo a insertar. |
Definición en la línea 230 del archivo tpl_binNodeXt.H.
void Aleph::insert_by_pos_xt | ( | Node *& | r, | |
Node * | p, | |||
const size_t & | pos | |||
) | [inline] |
insert_by_pos_xt(r,p,pos) inserta en el árbol binario con rangos, en la posición infija pos, el nodo p.
[in,out] | r | raíz del árbol binario con rangos. |
[in] | p | nodo a insertar. |
[in] | pos | posición infija de inserción. |
Definición en la línea 436 del archivo tpl_binNodeXt.H.
Hace referencia a COUNT, LLINK, RLINK, y Aleph::split_pos_rec().
Node * insert_in_binary_search_tree | ( | Node *& | root, | |
Node * | p | |||
) | [inline] |
insert_in_binary_search_tree(root, p) inserta el nodo p en el árbol binario de búsqueda cuya raíz es root según el criterio de comparación Compare()().
Una versión especializada usa como criterio de comparación la relación "menor que".
[in,out] | root | la raíz del árbol binario de búsqueda. |
[in] | p | el nodo a insertar. |
Definición en la línea 1251 del archivo tpl_binNodeUtils.H.
Node * insert_root | ( | Node *& | root, | |
Node * | p | |||
) | [inline] |
insert_root(root,p) inserta el árbol binario de búsqueda con raíz root el nodo p. Luego de la operación, p deviene raíz del árbol binario de búsqueda.
La rutina particiona root en dos árboles según la clave contenida en p y luego adjunta las particiones a la rama izquierda y derecha de p.
[in,out] | root | raíz del árbol binario de búsqueda. Luego de la operación root adquiere el valor del parámetro p. |
[in] | p | nodo a insertar como raíz. |
Definición en la línea 1447 del archivo tpl_binNodeUtils.H.
Node * insert_root_rec | ( | Node * | root, | |
Node * | p | |||
) | [inline] |
insert_root_rec(root,p) inserta el árbol binario de búsqueda con raíz root el nodo p. Luego de la operación, p deviene raíz del árbol binario de búsqueda.
La rutina primero inserta p según la inserción clásica, luego rota p hasta que éste devenga la raíz.
[in] | root | raíz del árbol binario de búsqueda. |
[in] | p | nodo a insertar como raíz. |
Definición en la línea 1875 del archivo tpl_binNodeUtils.H.
Hace referencia a KEY, LLINK, RLINK, Aleph::rotate_to_left(), y Aleph::rotate_to_right().
Node* Aleph::insert_root_xt | ( | Node *& | root, | |
Node * | p | |||
) | [inline] |
insert_root_xt(root,p) inserta el árbol binario de búsqueda con rangos de raíz root el nodo p. Luego de la operación, p deviene raíz del árbol binario de búsqueda con rangos.
[in,out] | root | raíz del árbol binario de búsqueda con rangos. Luego de la operación root adquiere el valor del parámetro p. |
[in] | p | nodo a insertar como raíz. |
Definición en la línea 347 del archivo tpl_binNodeXt.H.
size_t Aleph::internal_path_length | ( | Node * | p | ) | [inline] |
[in] | p | raíz del árbol binario a calcular el ipl. |
Definición en la línea 898 del archivo tpl_binNodeUtils.H.
Referenciado por DynMapTree< Aleph::Avl_Tree< Key, Compare >, Key, Type, Compare >::internal_path_length().
Node * join | ( | Node * | t1, | |
Node * | t2, | |||
Node *& | dup | |||
) | [inline] |
join(t1,t2,dup) construye un árbol binario de búsqueda correspondiente a la unión de t1 con t2. Las claves duplicadas se inserta, en dup.
[in] | t1 | árbol binario de búsqueda. |
[in] | t2 | árbol binario de búsqueda. |
[out] | dup | árbol binario de búsqueda con las claves duplicadas de t2. |
Definición en la línea 1521 del archivo tpl_binNodeUtils.H.
Node* Aleph::join_exclusive | ( | Node *& | ts, | |
Node *& | tg | |||
) | [inline] |
join_exclusive(ts,tg) une dos árboles binarios de búsqueda en uno sólo. Por exclusivo se entiende que todas las claves de ts son menores que todas las claves de tg.
[in] | ts | árbol binario de búsqueda de claves menores. |
[in] | tg | árbol binario de búsqueda de claves mayores. |
Definición en la línea 1356 del archivo tpl_binNodeUtils.H.
Hace referencia a LLINK, y RLINK.
Referenciado por Gen_Splay_Tree< Aleph::BinNodeVtl< Key >, Key, Compare >::remove(), y Aleph::remove_from_search_binary_tree().
Node* Aleph::join_exclusive_xt | ( | Node *& | ts, | |
Node *& | tg | |||
) | [inline] |
join_exclusive_xt(ts,tg) une dos árboles binarios de búsqueda con rangos en uno sólo. Por exclusivo se entiende que todas las claves de ts son menores que todas las claves de tg.
[in] | ts | árbol binario de búsqueda de claves menores. |
[in] | tg | árbol binario de búsqueda de claves mayores. |
Definición en la línea 464 del archivo tpl_binNodeXt.H.
Hace referencia a COUNT, LLINK, y RLINK.
Referenciado por Aleph::remove_by_key_xt(), y Aleph::remove_by_pos_xt().
Node* Aleph::join_preorder | ( | Node * | t1, | |
Node * | t2, | |||
Node *& | dup | |||
) | [inline] |
join_preorder(t1,t2,dup) recorre el prefijo el árbol t2. Cada clave de t2 se inserta en t1. Si la clave está duplicada, entonces se inserta en dup.
[in] | t1 | árbol binario de búsqueda. |
[in] | t2 | árbol binario de búsqueda. |
[out] | dup | árbol binario de búsqueda con las claves duplicadas de t2. |
Definición en la línea 1486 del archivo tpl_binNodeUtils.H.
void Aleph::levelOrder | ( | Node * | root, | |
void(*)(Node *, int, bool) | visitFct, | |||
const size_t & | queue_size | |||
) | [inline] |
levelOrder(root,visit) realiza un recorrido por niveles sobre el árbol binario con raíz root. Si visitFct es especificado, entonces, por cada nodo visitado, se invoca la función.
La función de vista tiene la siguiente especificación:
void (*visitFct)(Node* p, int level, bool is_left)
Donde:
Este algoritmo utiliza una cola, vectorial, de capacidad máxima queue_size.
[in] | root | raíz del árbol a visitar. |
[in] | visitFct | puntero a la función de visita. |
[in] | queue_size | tamaño de la cola interna. |
Definición en la línea 611 del archivo tpl_binNodeUtils.H.
Hace referencia a ArrayQueue::get(), ArrayQueue::is_empty(), LLINK, ArrayQueue::put(), y RLINK.
int Aleph::postOrderRec | ( | Node * | root, | |
void(*)(Node *, int, int) | visitFct | |||
) | [inline] |
postOrderRec(root,visit) realiza un recorrido infijo sobre el árbol binario con raíz root. Si visitFct es especificado, entonces, por cada nodo visitado, se invoca la función.
La función de vista tiene la siguiente especificación:
void (*visitFct)(Node* p, int level, int pos)
Donde:
[in] | root | raíz del árbol a visitar. |
[in] | visitFct | puntero a la función de visita. |
Definición en la línea 188 del archivo tpl_binNodeUtils.H.
Referenciado por DynMapTree< Aleph::Avl_Tree< Key, Compare >, Key, Type, Compare >::for_each_in_postorder().
Node* Aleph::preorder_to_binary_search_tree | ( | DynArray< typename Node::key_type > & | preorder, | |
const int & | l, | |||
const int & | r | |||
) | [inline] |
[in] | preorder | arreglo dinámico contentivo del recorrido prefijo de las claves de un árbol binario de búsqueda. |
[in] | l | índice de comienzo de la secuencia prefija en el arreglo dinámico preorder. |
[in] | r | índice de término de la secuencia prefija en el arreglo dinámico preorder. |
bad_alloc | si no hay suficiente memoria. |
Definición en la línea 961 del archivo tpl_binNodeUtils.H.
int Aleph::preOrderRec | ( | Node * | root, | |
void(*)(Node *, int, int) | visitFct | |||
) | [inline] |
preOrderRec(root,visit) realiza un recorrido prefijo sobre el árbol binario con raíz root. Si visitFct es especificado, entonces, por cada nodo visitado, se invoca la función.
La función de vista tiene la siguiente especificación:
void (*visitFct)(Node* p, int level, int pos)
Donde:
[in] | root | raíz del árbol a visitar. |
[in] | visitFct | puntero a la función de visita. |
Definición en la línea 141 del archivo tpl_binNodeUtils.H.
Referenciado por DynSetTree< Aleph::Splay_Tree< Key, Compare >, Key, Compare >::for_each_in_preorder(), y DynMapTree< Aleph::Avl_Tree< Key, Compare >, Key, Type, Compare >::for_each_in_preorder().
size_t Aleph::preOrderStack | ( | Node * | node, | |
void(*)(Node *, int, int) | visitFct | |||
) | [inline] |
preOrderRec(root,visit) realiza un recorrido prefijo sobre el árbol binario con raíz root. Si visitFct es especificado, entonces, por cada nodo visitado, se invoca la función.
La función de vista tiene la siguiente especificación:
void (*visitFct)(Node* p, int level, int pos)
Donde:
En lugar de apelar a la recursión, esta versión del recorrido prefijo utiliza una pila interna, vectorial, de capacidad máxima Node::MaxHeight.
[in] | node | raíz del árbol a visitar. |
[in] | visitFct | puntero a la función de visita. |
Definición en la línea 278 del archivo tpl_binNodeUtils.H.
Hace referencia a ArrayStack::is_empty(), LLINK, ArrayStack::pop(), ArrayStack::push(), RLINK, y ArrayStack::size().
void Aleph::preOrderThreaded | ( | Node * | node, | |
void(*)(Node *) | visitFct | |||
) | [inline] |
prerderThreaded(root,visit) realiza un recorrido prefijo sobre el árbol binario con raíz root. Si visitFct es especificado, entonces, por cada nodo visitado, se invoca la función.
La función de vista tiene la siguiente especificación:
void (*visitFct)(Node* p, int level, int pos)
Donde:
Esta versión del recorrido prefijo no consume espacio en pila.
[in] | node | raíz del árbol a visitar. |
[in] | visitFct | puntero a la función de visita. |
Definición en la línea 840 del archivo tpl_binNodeUtils.H.
random_join_exclusive(tl,tr) une dos árboles binarios de búsqueda con rangos en uno sólo. Por exclusivo se entiende que todas las claves de tl son menores que todas las claves de tr. A diferencia de join_exclusive(), random_join_exclusive() escoge aleatoriamente cuál de las raíces de tl y tr devendrá raíz del árbol binario resultante. Consecuentemente, el árbol siempre será aleatorio.
La rutina puede ser utilizada por cualquier clase de árbol binario de búsqueda con rangos derivada de BinNodeXt. Su presencia dentro de la clase Gen_Rand_Tree obedece a la disponibilidad del generador de números aleatorios.
[in] | tl | árbol binario de búsqueda con rangos de claves menores. |
[in] | tr | árbol binario de búsqueda con rangos de claves mayores. |
Definición en la línea 227 del archivo tpl_rand_tree.H.
Referenciado por Gen_Rand_Tree< Aleph::RandNodeVtl< Key >, Key, Compare >::random_join_exclusive(), y Gen_Rand_Tree< Aleph::RandNodeVtl< Key >, Key, Compare >::random_remove().
Node * remove_by_key_xt | ( | Node *& | root, | |
const typename Node::key_type & | key | |||
) | [inline] |
remove_by_key_xt(root,key) busca en el árbol binario de búsqueda con rangos de raíz root un nodo que contenga la clave key. Si el nodo es encontrado, entonces éste se substituye en el árbol binario general por el resultado de la unión exclusiva de los subárboles del nodo eliminado.
[in,out] | root | raíz del árbol binario de búsqueda. |
[in] | key | clave del nodo a eliminar. |
Definición en la línea 504 del archivo tpl_binNodeXt.H.
Hace referencia a COUNT, Aleph::join_exclusive_xt(), KEY, LLINK, y RLINK.
Node* Aleph::remove_by_pos_xt | ( | Node *& | root, | |
const size_t & | pos | |||
) | [inline] |
remove_by_pos_xt(root,pos) elimina del árbol binario con rangos des raíz root el nodo en la posición pos. Si el nodo es encontrado, entonces éste se substituye en el árbol binario general por el resultado de la unión exclusiva de los subárboles del nodo eliminado.
[in,out] | root | raíz del árbol binario de búsqueda. |
[in] | pos | posición infija del nodo a eliminar. |
Definición en la línea 570 del archivo tpl_binNodeXt.H.
Hace referencia a COUNT, Aleph::join_exclusive_xt(), LLINK, y RLINK.
Node * remove_from_search_binary_tree | ( | Node *& | root, | |
const typename Node::key_type & | key | |||
) | [inline] |
remove_from_search_binary_tree(root,key) busca en el árbol binario de búsqueda con raíz root un nodo que contenga la clave key. Si el nodo es encontrado, entonces éste se substituye en el árbol binario general por el resultado de la unión exclusiva de los subárboles del nodo eliminado.
[in,out] | root | raíz del árbol binario de búsqueda. |
[in] | key | clave del nodo a eliminar. |
Definición en la línea 1394 del archivo tpl_binNodeUtils.H.
Hace referencia a Aleph::join_exclusive(), KEY, LLINK, y RLINK.
Node* Aleph::rotate_to_left | ( | Node * | p, | |
Node * | pp | |||
) | [inline] |
rotate_to_left(p, pp) rota hacia la izquierda el árbol binario con raíz p y actualiza en pp, el padre de p, la rama que apunta al árbol binario rotado resultante.
[in] | p | raíz del árbol a rotar. |
[in,out] | pp | padre de p. Luego de la operación, la rama de pp que apunta a p es actualizada al árbol binario resultante de la rotación. |
Definición en la línea 1629 del archivo tpl_binNodeUtils.H.
Hace referencia a LLINK, y RLINK.
Referenciado por Aleph::insert_root_rec(), y Gen_Treap< Aleph::TreapNodeVtl< Key >, Key, Compare >::remove().
Node * search_deway | ( | Node * | root, | |
const typename Node::key_type & | key, | |||
int | deway[], | |||
const size_t & | size, | |||
size_t & | n | |||
) | [inline] |
search_deway(root,key,deway,n) busca en la arborescencia cuyo primer árbol es root un nodo que contenga la clave key. Si el nodo es encontrado, entonces la rutina guarda en deway[] el número de Deway del nodo encontrado.
La búsqueda se realiza con criterio de igualdad Equal()(). Una versión especializada realiza la búsqueda con criterio "menor que".
[in] | root | raíz del primer árbol de la arborescencia. |
[in] | key | clave a buscar |
[out] | deway | arreglo que contiene el número de Deway. |
[in] | size | tamaño máximo del número de deway. |
[out] | n | tamaño del número de Deway calculado (si se encuentra el nodo). |
overflow_error | si size no es suficiente para almacenar la secuencia de Deway. |
Definición en la línea 769 del archivo tpl_tree_node.H.
Node * search_parent | ( | Node * | root, | |
const typename Node::key_type & | key, | |||
Node *& | parent | |||
) | [inline] |
search_parent(root,key,parent) busca la clave key en el árbol binario de búsqueda cuya raíz es root y determina, además del nodo contentivo de la clave, el nodo padre.
La rutina utiliza como criterio de comparación Compare()(). Una versión especializada asume la relación "menor que" como criterio de comparación
[in] | root | la raíz del árbol binario de búsqueda donde realizar la búsqueda. |
[in] | key | la clave de búsqueda. |
[out] | parent | puntero al nodo padre del que contiene la clave (si fue encontrada). |
Definición en la línea 1144 del archivo tpl_binNodeUtils.H.
Node * search_rank_parent | ( | Node * | root, | |
const typename Node::key_type & | key | |||
) | [inline] |
search_rank_parent(root,key) busca en el árbol binario búsqueda cuya raíz es root la clave key. Si la clave se encuentra en el árbol binario, entonces retorna el nodo contentivo de la clave; de lo contrario, se retorna el nodo que sería padre de la clave si ésta fuese insertada en el árbol binario de búsqueda.
[in] | root | raíz del árbol binario de búsqueda. |
[in] | key | clave a buscar. |
Definición en la línea 1200 del archivo tpl_binNodeUtils.H.
Hace referencia a KEY, LLINK, y RLINK.
Referenciado por set::lower_bound(), map::lower_bound(), set::upper_bound(), y map::upper_bound().
Node * searchInBinTree | ( | Node * | root, | |
const typename Node::key_type & | key | |||
) | [inline] |
searchInBinTree(root,key) busca en un árbol binario de búsqueda un nodo contentivo de la clave key.
El árbol binario de búsqueda está ordenado con criterio de comparación Compare()().
Una versión especializada utiliza como comparación la relación "menor que".
[in] | root | raíz del árbol binario. |
[in] | key | clave a buscar. |
Definición en la línea 1001 del archivo tpl_binNodeUtils.H.
Node* Aleph::select | ( | Node * | r, | |
const size_t & | pos | |||
) | throw (std::exception, std::out_of_range) [inline] |
select(r,i) retorna el nodo cuya posición infija es in del árbol binario con rangos cuya raíz es r.
Este algoritmo de selección es iterativo. Es más eficiente y seguro que select_rec().
[in] | r | raíz del árbol binario con rangos. |
[in] | pos | posición infija que se desea acceder. |
out_of_range | si i es mayor o igual que la cantidad total de nodos del árbol binario. |
Definición en la línea 131 del archivo tpl_binNodeXt.H.
Hace referencia a COUNT, LLINK, y RLINK.
Referenciado por Gen_Treap_Rk< Aleph::Treap_Rk_Node< Key >, Key, Compare >::select().
Node* Aleph::select_gotoup_root | ( | Node * | root, | |
const size_t & | i | |||
) | [inline] |
select_gotoup_root(r,i) selecciona el nodo con posición infija i y lo rota hasta que éste devenga su raíz.
Este algoritmo de selección es recursivo.
[in] | root | raíz del árbol binario con rangos. |
[in] | i | posición infija que se desea acceder. |
out_of_range | si i es mayor o igual que la cantidad total de nodos del árbol binario. |
Definición en la línea 72 del archivo tpl_balanceXt.H.
Hace referencia a COUNT, LLINK, RLINK, Aleph::rotate_to_left_xt(), y Aleph::rotate_to_right_xt().
Node* Aleph::select_rec | ( | Node * | r, | |
const size_t & | i | |||
) | throw (std::exception, std::out_of_range) [inline] |
select_rec(r,i) retorna el nodo con posición infija i en árbol binario con rangos cuya raíz es r.
Este algoritmo de selección es recursivo.
[in] | r | raíz del árbol binario con rangos. |
[in] | i | posición infija que se desea acceder. |
out_of_range | si i es mayor o igual que la cantidad total de nodos del árbol binario. |
Definición en la línea 93 del archivo tpl_binNodeXt.H.
size_t Aleph::simple_preOrderStack | ( | Node * | node, | |
void(*)(Node *, int, int) | visitFct | |||
) | [inline] |
simple_preOrderRec(root,visit) realiza un recorrido prefijo sobre el árbol binario con raíz root. Si visitFct es especificado, entonces, por cada nodo visitado, se invoca la función.
La función de vista tiene la siguiente especificación:
void (*visitFct)(Node* p, int level, int pos)
Donde:
En lugar de apelar a la recursión, esta versión del recorrido prefijo utiliza una pila interna, vectorial, de capacidad máxima Node::MaxHeight.
[in] | node | raíz del árbol a visitar. |
[in] | visitFct | puntero a la función de visita. |
Definición en la línea 223 del archivo tpl_binNodeUtils.H.
Hace referencia a ArrayStack::is_empty(), LLINK, ArrayStack::pop(), ArrayStack::push(), RLINK, y ArrayStack::size().
void split_key | ( | Node * | root, | |
const Key & | key, | |||
Node *& | l, | |||
Node *& | r | |||
) | [inline] |
split_key(root,key,l,r) particiona ietartivamente, según la clave key, un árbol binario de búsqueda en dos árboles l y r. Luego de la operación el árbol, el árbol root deviene vacío, l contiene todas las claves menores que key y r las mayores o iguales.
La partición iterativa es más rápida que la recursiva.
[in,out] | root | puntero a la raíz del árbol binario a particionar. |
[in] | key | clave de partición. |
[out] | l | árbol con las claves menores que key. |
[out] | r | árbol con las claves mayores que key. |
Definición en la línea 1674 del archivo tpl_binNodeUtils.H.
bool split_key_rec | ( | Node * | root, | |
const typename Node::key_type & | key, | |||
Node *& | ts, | |||
Node *& | tg | |||
) | [inline] |
split_key_rec(root,key,ts,tg) particiona, según la clave key, un árbol binario de búsqueda en dos árboles ts y tg. Luego de la operación el árbol, el árbol root deviene vacío, ts contiene todas las claves menores que key y tg las mayores.
[in,out] | root | puntero a la raíz del árbol binario a particionar. |
[in] | key | clave de partición. |
[out] | ts | árbol con las claves menores que key. |
[out] | tg | árbol con las claves mayores que key. |
Definición en la línea 1297 del archivo tpl_binNodeUtils.H.
bool split_key_rec_xt | ( | Node * | root, | |
const typename Node::key_type & | key, | |||
Node *& | l, | |||
Node *& | r | |||
) | [inline] |
split_key_rec_xt(root,key,l,r) particiona, según la clave key, un árbol binario de búsqueda con rangos en dos árboles ts y tg. Luego de la operación el árbol, el árbol root deviene vacío, ts contiene todas las claves menores que key y tg las mayores.
[in,out] | root | puntero a la raíz del árbol binario con rangos que se desea particionar. |
[in] | key | clave de partición. |
[out] | l | árbol binario de búsqueda con rangos con las claves menores que key. |
[out] | r | árbol binario de búsqueda con rangos con las claves mayores que key. |
Definición en la línea 288 del archivo tpl_binNodeXt.H.
void Aleph::split_pos_rec | ( | Node * | r, | |
const size_t & | i, | |||
Node *& | ts, | |||
Node *& | tg | |||
) | [inline] |
split_pos_rec(r,i,ts,tg) particiona un árbol binario de búsqueda con rangos, según la posición infija u, en dos árboles ts y tg. Luego de la operación el árbol, el árbol root deviene vacío, ts contiene todas las claves entre [0..i] y tg entre (i..n) donde n es la cantidad de nodos del árbol binario. que key y tg las mayores.
[in,out] | r | puntero a la raíz del árbol binario con rangos que se desea particionar. |
[in] | i | posición infija de partición. |
[out] | ts | árbol binario de búsqueda con rangos con las claves [0..i]. |
[out] | tg | árbol binario de búsqueda con rangos con las claves (i..n). |
Definición en la línea 382 del archivo tpl_binNodeXt.H.
Hace referencia a COUNT, LLINK, y RLINK.
Referenciado por Aleph::insert_by_pos_xt(), y Gen_Treap_Rk< Aleph::Treap_Rk_Node< Key >, Key, Compare >::remove().
void Aleph::swap_node_with_predecessor | ( | Node * | p, | |
Node *& | pp, | |||
Node * | q, | |||
Node *& | pq | |||
) | [inline] |
swap_node_with_predecessor(p,pp,q,pq) intercambia, a nivel de sus enlaces en un árbol binario, el nodo p con su nodo predecesor infijo q. Los enlaces de los padres de p y q son los parámetros pp y pq que se requieren para realizar la actualización.
La rutina está esencialmente destinada para usarse en la eliminación en un árbol binario de búsqueda.
[in] | p | nodo a intercambiar con su predecesor. |
[in,out] | pp | padre del nodo p. |
[in] | q | predecesor del nodo p. |
[in,out] | pq | padre del sucesor q. |
Definición en la línea 1814 del archivo tpl_binNodeUtils.H.
void Aleph::swap_node_with_successor | ( | Node * | p, | |
Node *& | pp, | |||
Node * | q, | |||
Node *& | pq | |||
) | [inline] |
swap_node_with_successor(p,pp,q,pq) intercambia, a nivel de sus enlaces en un árbol binario, el nodo p con su nodo sucesor infijo q. Los enlaces de los padres de p y q son los parámetros pp y pq que se requieren para realizar la actualización.
La rutina está esencialmente destinada para usarse en la eliminación en un árbol binario de búsqueda.
[in] | p | nodo a intercambiar con su sucesor. |
[in,out] | pp | padre del nodo p. |
[in] | q | sucesor del nodo p. |
[in,out] | pq | padre del sucesor q. |
Definición en la línea 1753 del archivo tpl_binNodeUtils.H.
void Aleph::tree_postorder_traversal | ( | Node * | root, | |
void(*)(Node *, int, int) | visitFct | |||
) | [inline] |
tree_postorder_traversal((root,visit) realiza un recorrido prefijo sobre el árbol con raíz root. Si visitFct es especificado, entonces, por cada nodo visitado, se invoca la función.
La función de vista tiene la siguiente especificación:
void (*visitFct)(Node* p, int level, int pos)
Donde:
[in] | root | raíz del árbol a visitar. |
[in] | visitFct | puntero a la función de visita. |
Definición en la línea 562 del archivo tpl_tree_node.H.
void Aleph::tree_preorder_traversal | ( | Node * | root, | |
void(*)(Node *, int, int) | visitFct | |||
) | [inline] |
tree_preorder_traversal((root,visit) realiza un recorrido prefijo sobre el árbol con raíz root. Si visitFct es especificado, entonces, por cada nodo visitado, se invoca la función.
La función de vista tiene la siguiente especificación:
void (*visitFct)(Node* p, int level, int pos)
Donde:
[in] | root | raíz del árbol a visitar. |
[in] | visitFct | puntero a la función de visita. |
domain_error | si root no es un nodo raíz de un árbol. |
Definición en la línea 479 del archivo tpl_tree_node.H.