Aleph-w  1.9
General library for algorithms and data structures
Aleph::GenBinHeap< NodeType, Key, Compare > Class Template Reference

#include <tpl_binHeap.H>

Public Types

using Node = NodeType< Key >
 

Public Member Functions

Compare & key_comp () noexcept
 
Compare & get_compare () noexcept
 
void swap (GenBinHeap &h) noexcept
 
Node * getRoot () noexcept
 
Node * getRoot () const noexcept
 
template<class Operation >
bool preorder_traverse (Operation op) const noexcept(noexcept(op))
 
template<class Operation >
void for_each_in_preorder (Operation &operation) const
 
template<class Operation >
void for_each_in_preorder (Operation &&operation=Operation()) const
 
template<class Operation >
void for_each_in_inorder (Operation &operation) const
 
template<class Operation >
void for_each_in_inorder (Operation &&operation=Operation()) const
 
template<class Op >
bool level_traverse (Op operation=Op()) const
 
 GenBinHeap (Compare __cmp=Compare()) noexcept
 
Node * insert (Node *p) noexcept
 
Node * getMin_ne () noexcept
 
Node * getMin ()
 
Node * getMax ()
 
void update (Node *p) noexcept
 
Node * remove (Node *node)
 
void remove_all_and_delete () noexcept
 
Node * top ()
 
const size_t & size () const noexcept
 Retorna la cardinalidad del heap.
 
bool is_empty () const noexcept
 Retorna true si el heap está vacío.
 
bool verify_heap () const
 

Protected Member Functions

virtual bool verify_heap (Node *p) const
 

Static Protected Member Functions

static Node * advance_left (Node *p) noexcept
 
static Node * advance_right (Node *p) noexcept
 

Protected Attributes

Compare cmp
 

Detailed Description

template<template< class > class NodeType, typename Key, class Compare = Aleph::less<Key>>
class Aleph::GenBinHeap< NodeType, Key, Compare >

Heap genérico de nodos.

La clase GenBinHeap instrumenta un heap de nodos. Este heap no está implementado mediante un arreglo, sino con un árbol binario. Esto proporciona la gran ventaja de ser altamente dinámico. La memoria empleada es pues proporcional a la cantidad de nodos del heap.

Esta clase no está destinada a uso público. Su fin es proveer la funcionalidad básica a las clases BinHeap, BinHeapVtl y DynBinHeap.

Parameters
NodeTypeel tipo de nodo que usa el heap; éste será con o sin destructor virtual.
Keyla clave que guarda cada nodo.
Compareel criterio de comparación entre las claves de los nodos.
See also
BinHeap BinHeapVtl DynBinHeap

Member Function Documentation

◆ getMax()

template<template< class > class NodeType, typename Key, class Compare = Aleph::less<Key>>
Node* Aleph::GenBinHeap< NodeType, Key, Compare >::getMax ( )
inline

This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.

◆ getMin()

template<template< class > class NodeType, typename Key, class Compare = Aleph::less<Key>>
Node* Aleph::GenBinHeap< NodeType, Key, Compare >::getMin ( )
inline

Elimina del heap el nodo de menor prioridad.

getMIn() extrae del heap this el nodo que contenga el menor valor de prioridad según el criterio de comparación definido en la declaración.

Returns
puntero al nodo eliminado.
Exceptions
underflow_errorsi el heap está vacío.
+ Here is the caller graph for this function:

◆ insert()

template<template< class > class NodeType, typename Key, class Compare = Aleph::less<Key>>
Node* Aleph::GenBinHeap< NodeType, Key, Compare >::insert ( Node *  p)
inlinenoexcept

Inserta un nodo en un heap.

insert(p) inserta en el heap this el nodo p.

Parameters
[in]pel nodo a insertar.
Returns
puntero al nodo insertado.
+ Here is the caller graph for this function:

◆ remove()

template<template< class > class NodeType, typename Key, class Compare = Aleph::less<Key>>
Node* Aleph::GenBinHeap< NodeType, Key, Compare >::remove ( Node *  node)
inline

Elimina del heap el nodo node.

remove(node) elimina del heap el nodo node.

Parameters
[in]nodepuntero al nodo a eliminar.
Exceptions
underflow_errorsi el heap está vacío
Returns
puntero al nodo eliminado
Note
No se verifica si node pertenece al heap.

◆ remove_all_and_delete()

template<template< class > class NodeType, typename Key, class Compare = Aleph::less<Key>>
void Aleph::GenBinHeap< NodeType, Key, Compare >::remove_all_and_delete ( )
inlinenoexcept

Borra todos los nodos del heap, invoca a los destructores de los nodos eliminados y libera toda la memoria

◆ top()

template<template< class > class NodeType, typename Key, class Compare = Aleph::less<Key>>
Node* Aleph::GenBinHeap< NodeType, Key, Compare >::top ( )
inline

Retorna el nodo con menor prioridad según el criterio de comparación especificado en la declaración.

◆ update()

template<template< class > class NodeType, typename Key, class Compare = Aleph::less<Key>>
void Aleph::GenBinHeap< NodeType, Key, Compare >::update ( Node *  p)
inlinenoexcept

Actualiza prioridad de un nodo contenido en el heap.

update(p) toma un nodo del heap cuya prioridad haya sido modificada y actualiza su prioridad dentro del heap. La idea es que si por alguna razón una prioridad debe ser modificada, entonces el orden de extracción pueda actualizarse.

Parameters
[in]ppuntero al nodo que se desea actualizar
See also
insert()

The documentation for this class was generated from the following file:

Leandro Rabindranath León