#include <Tree_V.h>
Constructores y destructor | |
Tree () | |
Constructor de vector. | |
Tree (const Tree &o) | |
Constructor de copia desde otro árbol (copia superficial). | |
Tree (const value_type &d) | |
~Tree () | |
Destructor. | |
typedef void | NOT_null_pointer |
Truco para evitar comparar con 0 ( nil ) al usar Tree_Node<E>* para construir Tree() . | |
Tree (Tree_Node< E > *p) | |
Constructor a partir de un nodo. | |
Tree (NOT_null_pointer *p) | |
Constructor a partir de un nodo [ requiere p != 0 ]. | |
Operaciones básicas | |
bool | Empty () const |
Retorna "true" si el sub-árbol está vacío. | |
unsigned | Count () const |
Retorna la cantidad de valores almacenados en el sub-árbol. | |
unsigned | Count_Children () const |
Retorna la cantidad de hijos del árbol. | |
unsigned | Size () const |
Usa Count() para retornar la cantidad de valores almacenados en el sub-árbol. | |
bool | Ok () |
Usa check_ok(Tree& T) para verificar la invariante de Tree . | |
bool | check_ok (const Tree< E > &T) |
Verifica que se cumpla la invariante de la clase, o sea, que el objeto esté bien construido. | |
Operaciones de comparación | |
bool | Equals (const Tree &o) const |
¿¿¿ (*this==o) ??? | |
bool | Same (const Tree &o) const |
Retorna true si "o" comparte la raíz con "*this" . | |
template<class X> | |
bool | operator== (const Tree< X > &p, const Tree< X > &q) |
¿¿¿ (p == q) ??? | |
template<class X> | |
bool | operator!= (const Tree< X > &p, const Tree< X > &q) |
¿¿¿ (p != q) ??? | |
Tipos públicos | |
typedef E | value_type |
Nombre estándar del tipo de elemento contenido. | |
Métodos públicos | |
Operaciones de borrado | |
void | Erase () |
Elimina el árbol y sus descendientes. | |
void | Erase_Son (unsigned n) |
Elimina el sub-árbol número "n" . | |
Operaciones de copiado | |
Tree & | operator= (const Tree &o) |
Sinónimo de this->Copy(o) . | |
Tree & | Copy (const Tree &o) |
Copia superficial desde "o" . | |
Tree & | Move (Tree &o) |
Traslada el valor de "o" a "*this" . | |
Tree & | Swap (Tree &o) |
Intercambia los valores de "*this" y "o" . | |
Tree & | Copy_Deep (const Tree &o) |
Copia profunda de "o" . | |
Tree & | operator= (const value_type &d) |
Usa Change_Root() para sustituir por "d" el valor almacenado en la raíz del árbol. | |
Métodos para cambiar los valores almacenados en el árbol | |
Tree | Change_Root (const value_type &d) |
Sustituye por "d" el valor almacenado en la raíz del árbol. | |
Tree | Change_Child (unsigned n, const value_type &d) |
Sustituye por "d" el valor almacenado en el hijo número "n" del árbol. | |
Tree | Change_Left_Sibling_Inmediate (const value_type &d) |
Sustituye por "d" el valor almacenado en el hermano inmediatamente anterior del sub-árbol. | |
Tree | Change_Right_Sibling_Inmediate (const value_type &d) |
Sustituye por "d" el valor almacenado en el hermano inmediatamente posterior del sub-árbol. | |
Tree | Graft (unsigned n, Tree &o) |
Injerta "o" para que sea el "n"-ésimo hijo de "*this" . | |
Operaciones para usar los valores almacenados | |
value_type & | Data () |
Valor almacenado en la raíz del sub-árbol. | |
value_type & | operator * () |
Valor almacenado en la raíz del sub-árbol. | |
value_type * | operator-> () |
Puntero al valor almacenado en la raíz del sub-árbol. | |
const value_type & | Data () const |
Valor almacenado en la raíz del sub-árbol. | |
const value_type & | operator * () const |
Valor almacenado en la raíz del sub-árbol. | |
const value_type * | operator-> () const |
Puntero al valor almacenado en la raíz del sub-árbol. | |
Métodos para recorrer el árbol | |
Tree | Root () const |
Raíz del sub-árbol. | |
Tree | Father () const |
Acceso al padre. | |
Tree | Child (unsigned n) const |
Acceso al "n"-ésimo hijo. | |
Tree | Left () const |
Sub-árbol izquierdo [en un árbol binario]. | |
Tree | Right () const |
Sub-árbol derecho [en un árbol binario]. | |
Tree | Leftmost () const |
Obtiene el hijo más izquierdo del árbol. | |
Tree | Rightmost () const |
Obtiene el hijo más derecho del árbol. | |
Tree | Sibling (int n) const |
"n"-ésimo hermano a partir de "*this" . | |
Tree | Left_Sibling () const |
Obtiene el hermano no vacío anterior, que está hacia la izquierda. | |
Tree | Right_Sibling () const |
Obtiene el hermano no vacío siguiente, que está hacia la derecha. | |
Tree | Previous_Sibling () const |
Sinónimo de Left_Sibling() . | |
Tree | Prev_Sibling () const |
Sinónimo de Left_Sibling() . | |
Tree | Next_Sibling () const |
Sinónimo de Right_Sibling() . | |
Tree | Right_Sibling_Inmediate () const |
Obtiene el hermano que está inmediatamente hacia la derecha. | |
Tree | Left_Sibling_Inmediate () const |
Obtiene el hermano que está inmediatamente hacia la izquierda. | |
Propiedades del árbol | |
unsigned | Child_Number () const |
Retorna "n" si "*this" es el n-ésimo hijo de su padre, si no retorna 0 (cero). | |
unsigned | Leftmost_N () const |
Retorna "n" si el hijo más izquierdo de "*this" es el n-ésimo hijo, si no retorna 0 (cero). | |
unsigned | Rightmost_N () const |
Retorna "n" si el hijo más derecho de "*this" es el n-ésimo hijo, si no retorna 0 (cero). | |
bool | Is_Leaf () const |
Retorna "true" si el árbol es una hoja. | |
bool | Is_Root () const |
Retorna "true" si el árbol no tiene padre. | |
unsigned | use_count () const |
Cantidad de referencias de la raíz del árbol. | |
Métodos privados estáticos | |
Funciones para manipular valores a bajo nivel | |
Tree & | CastTo_Tree_Ref (Tree_Node< E > *&p) |
Convierte el puntero al nodo en un referencia a Tree . | |
Funciones recursivas que realizan el trabajo sobre nodos | |
void | Erase0 (Tree_Node< E > *p) |
Elimina recursivamente a "*p" y a todos sus descendientes. | |
bool | Comp0 (const Tree_Node< E > *p, const Tree_Node< E > *q) |
Compara recursivamente los árboles cuyos nodo raíz son "*p" y "*q" . | |
void | Count0 (const Tree_Node< E > *p, unsigned &n) |
Implementación recursiva para Count() . | |
Tree_Node< E > * | Copy_Deep0 (Tree_Node< E > *father, const Tree_Node< E > *p) |
Hace una copia profunda nodo por nodo del árbol cuyo nodo raíz es "*p" . | |
Atributos privados | |
Tree_Node< E > * | m_root |
Un árbol "es" el puntero al nodo raíz. | |
Atributos privados estáticos | |
const unsigned | N = Tree_Node<E>::N |
Cantidad máxima de hijos por nodo. |
Tree<E>::Copy_Deep()
.Father()
o Root()
sean métodos const
.Tree&
porque es más eficiente, pues cada vez que un Tree
es copiado hay que actualizar la "cuenta de referencia" de la raíz del sub-árbol.
Definición en la línea 68 del archivo Tree_V.h.
|
Nombre estándar del tipo de elemento contenido.
|
|
Truco para evitar comparar con
Al implementar cada uno de los métodos de
Esta clase se usa como una marca para que se ejecute el contructor
|
|
Constructor de vector.
|
|
Constructor de copia desde otro árbol (copia superficial).
|
|
|
|
Destructor.
|
|
Constructor a partir de un nodo.
|
|
Constructor a partir de un nodo [ requiere
|
|
Retorna
|
|
Retorna la cantidad de valores almacenados en el sub-árbol.
|
|
Retorna la cantidad de hijos del árbol.
|
|
Usa
|
|
Usa
|
|
Elimina el árbol y sus descendientes.
|
|
Elimina el sub-árbol número
|
|
Sinónimo de
|
|
Copia superficial desde
|
|
Traslada el valor de
|
|
Intercambia los valores de
|
|
Copia profunda de
|
|
Usa
|
|
Sustituye por
|
|
Sustituye por
|
|
Sustituye por
|
|
Sustituye por
|
|
Injerta
|
|
Valor almacenado en la raíz del sub-árbol.
|
|
Valor almacenado en la raíz del sub-árbol.
|
|
Puntero al valor almacenado en la raíz del sub-árbol.
|
|
Valor almacenado en la raíz del sub-árbol.
|
|
Valor almacenado en la raíz del sub-árbol.
|
|
Puntero al valor almacenado en la raíz del sub-árbol.
|
|
¿¿¿ (*this==o) ???
|
|
Retorna
|
|
Raíz del sub-árbol.
|
|
Acceso al padre.
|
|
Acceso al
|
|
Sub-árbol izquierdo [en un árbol binario].
|
|
Sub-árbol derecho [en un árbol binario].
|
|
Obtiene el hijo más izquierdo del árbol.
Tree<E> Child = T.Leftmost();
while ( ! Child.Empty() ) {
Process( Child );
Child = Child.Right_Sibling();
}
|
|
Obtiene el hijo más derecho del árbol.
Tree<E> Child = T.Rightmost();
while ( ! Child.Empty() ) {
Process( Child );
Child = Child.Left_Sibling();
}
|
|
|
|
Obtiene el hermano no vacío anterior, que está hacia la izquierda.
|
|
Obtiene el hermano no vacío siguiente, que está hacia la derecha.
|
|
Sinónimo de
|
|
Sinónimo de
|
|
Sinónimo de
|
|
Obtiene el hermano que está inmediatamente hacia la derecha.
|
|
Obtiene el hermano que está inmediatamente hacia la izquierda.
|
|
Retorna
|
|
Retorna
|
|
Retorna
|
|
Retorna
|
|
Retorna
|
|
Cantidad de referencias de la raíz del árbol.
|
|
Convierte el puntero al nodo en un referencia a
|
|
Elimina recursivamente a
|
|
Compara recursivamente los árboles cuyos nodo raíz son
|
|
Implementación recursiva para
|
|
Hace una copia profunda nodo por nodo del árbol cuyo nodo raíz es
|
|
Verifica que se cumpla la invariante de la clase, o sea, que el objeto esté bien construido.
|
|
¿¿¿ (p == q) ???
|
|
¿¿¿ (p != q) ???
|
|
Cantidad máxima de hijos por nodo.
|
|
Un árbol "es" el puntero al nodo raíz.
|