#include <Bin_Tree.h>
Constructores y destructor | |
| Bin_Tree () | |
| Constructor de vector: el árbol queda vacío. | |
| Bin_Tree (const Bin_Tree &other) | |
| Constructor de copia desde otro árbol (copia superficial). | |
| Bin_Tree (const value_type &d) | |
| Constructor a partir de un valor. | |
| ~Bin_Tree () | |
| Destructor. | |
| Bin_Tree (lkptr< Bin_Tree_Node< E > > &other) | |
| Constructor a partir de un nodo. | |
Operaciones de comparación | |
| bool | equals (const Bin_Tree &o) const |
| ¿¿¿ (*this==o) ??? | |
| bool | same (const Bin_Tree &o) const |
Retorna true si "o" comparte la raíz con "*this". | |
| template<class E> | |
| bool | operator== (const Bin_Tree< E > &p, const Bin_Tree< E > &q) |
| ¿¿¿ (p == q) ??? | |
| template<class E> | |
| bool | operator!= (const Bin_Tree< E > &p, const Bin_Tree< E > &q) |
| ¿¿¿ (p != q) ??? | |
Tipos públicos | |
| typedef E | value_type |
| Nombre estándar del tipo de elemento contenido. | |
Métodos públicos | |
Operaciones básicas | |
| bool | isEmpty () const |
Retorna "true" si el sub-árbol está vacío. | |
| unsigned | count () const |
| Retorna la cantidad de valores almacenados en el sub-árbol. | |
| unsigned | countChildren () 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 () const |
Operaciones de borrado | |
| void | erase () |
| Elimina el árbol y sus descendientes. | |
Operaciones de copiado | |
| Bin_Tree & | operator= (const Bin_Tree &other) |
Sinónimo de this->copy(o) (pero retorna *this). | |
| void | copy (const Bin_Tree &other) |
Copia superficial desde "o". | |
| Bin_Tree & | copyDeep (const Bin_Tree &other) |
Copia profunda de "other". | |
| Bin_Tree & | operator= (const value_type &d) |
Usa changeRoot() para sustituir por "d" el valor almacenado en la raíz del árbol. | |
| void | swap (Bin_Tree &other) |
Intercambia los valores de "*this" y "o". | |
| void | move (Bin_Tree &other) |
Traslada a "*this" el valor de "other". | |
Métodos para cambiar los valores almacenados en el árbol | |
| void | changeRoot (const value_type &d) |
Sustituye por "d" el valor almacenado en la raíz del árbol. | |
| void | changeChild (unsigned n, const value_type &d) |
Sustituye por "d" el valor almacenado en el hijo número "n" del árbol. | |
| void | makeLeftChild (Bin_Tree &T) |
Pone al árbol "T" como sub-árbol izquierdo de "*this". | |
| void | makeRightChild (Bin_Tree &T) |
Pone al árbol "T" como sub-árbol derecho de "*this". | |
Operaciones para usar los valores almacenados | |
| value_type & | dato () const |
| Valor almacenado en la raíz del sub-árbol. | |
| value_type & | operator * () const |
| Valor almacenado en la raíz del sub-árbol. | |
| value_type * | operator-> () const |
| Puntero al valor almacenado en la raíz del sub-árbol. | |
Métodos para recorrer el árbol | |
| Bin_Tree | root () const |
| Raíz del sub-árbol. | |
| Bin_Tree | padre () const |
| Acceso al padre. | |
| Bin_Tree | left () const |
| Acceso al hijo izquierdo. | |
| Bin_Tree | right () const |
| Acceso al hijo derecho. | |
| Bin_Tree | child (int i) const |
| Acceso al i-ésimo hijo del árbol. | |
Propiedades del árbol | |
| bool | isLeaf () const |
Retorna "true" si el árbol es una hoja. | |
| bool | isRoot () const |
Retorna "true" si el árbol no tiene padre. | |
| unsigned | refs () const |
| Cantidad de referencias de la raíz del árbol. | |
Atributos privados | |
| lkptr< Bin_Tree_Node< E > > | m_root |
| Un árbol "es" el puntero al nodo raíz. | |
Bin_Tree::copyDeep().
Definición en la línea 52 del archivo Bin_Tree.h.
| typedef E Bin_Tree< E >::value_type |
| template< class E > inline Bin_Tree< E >::Bin_Tree | ( | const Bin_Tree< E > & | o | ) | [inline] |
Constructor de copia desde otro árbol (copia superficial).
1 ). Definición en la línea 63 del archivo Bin_Tree.h.
| Bin_Tree< E >::Bin_Tree | ( | const value_type & | d | ) | [inline] |
| Bin_Tree< E >::Bin_Tree | ( | lkptr< Bin_Tree_Node< E > > & | other | ) | [inline, private] |
| bool Bin_Tree< E >::isEmpty | ( | ) | const [inline] |
| unsigned Bin_Tree< E >::count | ( | ) | const |
Retorna la cantidad de valores almacenados en el sub-árbol.
Definición en la línea 303 del archivo Bin_Tree.h.
| unsigned Bin_Tree< E >::countChildren | ( | ) | const |
Retorna la cantidad de hijos del árbol.
1 ) Definición en la línea 315 del archivo Bin_Tree.h.
| unsigned Bin_Tree< E >::size | ( | ) | const [inline] |
Usa count() para retornar la cantidad de valores almacenados en el sub-árbol.
Definición en la línea 78 del archivo Bin_Tree.h.
| bool Bin_Tree< E >::ok | ( | ) | const [inline] |
Definición en la línea 81 del archivo Bin_Tree.h.
| void Bin_Tree< E >::erase | ( | ) | [inline] |
Elimina el árbol y sus descendientes.
T.left().erase(); // No cambia "T" porque el que cambia es "T.left()"T.makeLeftChild( Bin_Tree<E>() ); // borra el hijo izquierdoT.makeRightChild( Bin_Tree<E>() ); // borra el hijo derecho
Definición en la línea 96 del archivo Bin_Tree.h.
Copia superficial desde "o".
"*this" se pierde. 1 ). Definición en la línea 104 del archivo Bin_Tree.h.
Copia profunda de "other".
"other" sobre "*this", de forma que el nuevo valor de "*this" sea un duplicado exacto del valor de "other"."*this" se pierde."other" mantiene su valor anterior."other" cambia, el de "*this" no cambiará, y viceversa, pues la copia es una copia profunda; no es superficial."*this" es "other" entonces su valor no cambia. *this == other . count() ) + O( other.count() ). *this. Definición en la línea 487 del archivo Bin_Tree.h.
| Bin_Tree& Bin_Tree< E >::operator= | ( | const value_type & | d | ) | [inline] |
Usa changeRoot() para sustituir por "d" el valor almacenado en la raíz del árbol.
Definición en la línea 107 del archivo Bin_Tree.h.
Intercambia los valores de "*this" y "o".
"*this" en lugar de una referencia, como ocurre con Bin_Tree::child(), a veces swap() no tiene el resultado esperado por el programador. T.child(i). swap( T.child(j) ) el resultado no es intercambiar los hijos, sino más bien intercambiar los valores de los sub-árboles temporales T.child(i) y T.child(j). La forma correcta de intercambiar hijos es usar makeLeftChild() y/o makeRightChild().
1 ). Definición en la línea 247 del archivo Bin_Tree.h.
Traslada a "*this" el valor de "other".
"*this" se pierde."*this" es el que "other" tuvo."other" queda en el estado en que lo dejaría other.erase()."*this" es "other" entonces su valor no cambia.this->equal(other) es "true". count() ) Definición en la línea 277 del archivo Bin_Tree.h.
| void Bin_Tree< E >::changeRoot | ( | const value_type & | d | ) |
Sustituye por "d" el valor almacenado en la raíz del árbol.
Definición en la línea 339 del archivo Bin_Tree.h.
| void Bin_Tree< E >::changeChild | ( | unsigned | n, | |
| const value_type & | d | |||
| ) |
Sustituye por "d" el valor almacenado en el hijo número "n" del árbol.
"n", lo agrega como una hoja con valor "d"."n", le sustituye su valor por "d"."n" no es uno de {0,1} no hace nada. Definición en la línea 353 del archivo Bin_Tree.h.
Pone al árbol "T" como sub-árbol izquierdo de "*this".
"*this" si "T" está vacío. ! isEmpty() Definición en la línea 387 del archivo Bin_Tree.h.
Pone al árbol "T" como sub-árbol derecho de "*this".
"*this" si "T" está vacío. ! isEmpty() Definición en la línea 399 del archivo Bin_Tree.h.
| value_type& Bin_Tree< E >::dato | ( | ) | const [inline] |
| value_type& Bin_Tree< E >::operator * | ( | ) | const [inline] |
| value_type* Bin_Tree< E >::operator-> | ( | ) | const [inline] |
Puntero al valor almacenado en la raíz del sub-árbol.
Definición en la línea 129 del archivo Bin_Tree.h.
Retorna true si "o" comparte la raíz con "*this".
Definición en la línea 141 del archivo Bin_Tree.h.
Acceso al padre.
Definición en la línea 150 del archivo Bin_Tree.h.
Acceso al hijo izquierdo.
Definición en la línea 156 del archivo Bin_Tree.h.
Acceso al hijo derecho.
Definición en la línea 163 del archivo Bin_Tree.h.
Acceso al i-ésimo hijo del árbol.
( i == 0 ) ==> Hijo izquierdo.( i == 1 ) ==> Hijo derecho. Definición en la línea 172 del archivo Bin_Tree.h.
| bool Bin_Tree< E >::isLeaf | ( | ) | const [inline] |
Retorna "true" si el árbol es una hoja.
"false" para un árbol vacío. Definición en la línea 185 del archivo Bin_Tree.h.
| bool Bin_Tree< E >::isRoot | ( | ) | const [inline] |
Retorna "true" si el árbol no tiene padre.
"false" para un árbol vacío. Definición en la línea 190 del archivo Bin_Tree.h.
| unsigned Bin_Tree< E >::refs | ( | ) | const [inline] |
lkptr< Bin_Tree_Node<E> > Bin_Tree< E >::m_root [private] |
1.4.7