#include <Arbol_Rojinegro.h>
Diagrama de herencias de Arbol_Rojinegro< T >

Tipos públicos | |
| typedef T | value_type |
| Nombre estándar del tipo de elemento contenido. | |
Métodos públicos | |
| Arbol_Rojinegro () | |
| Arbol_Rojinegro (Bin_Tree &o) | |
| Constructor. | |
| Arbol_Rojinegro (const T &val) | |
| ~Arbol_Rojinegro () | |
| Constructor a partir de un valor. | |
| bool | isEmpty () const |
Retorna "true" si el sub-árbol está vacío. | |
| unsigned | count () const |
| unsigned | countChildren () const |
| unsigned | size () const |
Usa count() para retornar la cantidad de valores almacenados en el sub-árbol. | |
| bool | ok () const |
| void | erase () |
| Elimina el árbol y sus descendientes. | |
| void | copy (const Bin_Tree &other) |
| Bin_Tree & | copyDeep (const Bin_Tree &other) |
| void | swap (Bin_Tree &other) |
| void | move (Bin_Tree &other) |
| void | changeRoot (const value_type &d) |
| void | changeChild (unsigned n, const value_type &d) |
| void | makeLeftChild (Bin_Tree &T) |
| void | makeRightChild (Bin_Tree &T) |
| 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. | |
| 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". | |
| 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. | |
| 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 públicos | |
| bool | color |
| Destructor. | |
Amigas | |
| bool | operator== (const Bin_Tree< T > &p, const Bin_Tree< T > &q) |
| ¿¿¿ (p == q) ??? | |
| bool | operator!= (const Bin_Tree< T > &p, const Bin_Tree< T > &q) |
| ¿¿¿ (p != q) ??? | |
-Cada nodo de un árbol rojo negro contiene la siguiente información: color, valor, hijo izquierdo, hijo derecho y padre. -Si un hijo o el padre de un nodo no existe, el apuntador correspondiente contiene el valor NULL, el cual consideraremos como un nodo cuyo color es negro. -En lo sucesivo nos referiremos a los nodos distintos a las hojas (NULL) como nodos internos del árbol y a las hojas y al padre de la raíz como nodos externos.
Todo árbol Rojinegro satisface las siguientes propiedades: -Todo nodo es rojo o negro -La raíz es negra -Toda hoja (NULL) es negra. -Si un nodo es rojo, entonces sus dos hijos son negros. -Para cada nodo, todas las rutas de un nodo a las hojas (NULLs) contienen el mismo número de nodos negros. El número de nodos negros en esta ruta se conoce como altura-negra del nodo.
Definición en la línea 26 del archivo Arbol_Rojinegro.h.
typedef T Bin_Tree< T >::value_type [inherited] |
| Arbol_Rojinegro< T >::Arbol_Rojinegro | ( | ) | [inline] |
Definición en la línea 28 del archivo Arbol_Rojinegro.h.
| Arbol_Rojinegro< T >::Arbol_Rojinegro | ( | Bin_Tree & | o | ) | [inline] |
| Arbol_Rojinegro< T >::Arbol_Rojinegro | ( | const T & | val | ) | [inline] |
Definición en la línea 30 del archivo Arbol_Rojinegro.h.
| Arbol_Rojinegro< T >::~Arbol_Rojinegro | ( | ) | [inline] |
| bool Bin_Tree< T >::isEmpty | ( | ) | const [inline, inherited] |
| unsigned Bin_Tree< T >::count | ( | ) | const [inherited] |
Retorna la cantidad de valores almacenados en el sub-árbol.
| unsigned Bin_Tree< T >::countChildren | ( | ) | const [inherited] |
Retorna la cantidad de hijos del árbol.
1 ) | unsigned Bin_Tree< T >::size | ( | ) | const [inline, inherited] |
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< T >::ok | ( | ) | const [inline, inherited] |
Definición en la línea 81 del archivo Bin_Tree.h.
| void Bin_Tree< T >::erase | ( | ) | [inline, inherited] |
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.
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 ).
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() ) | void Bin_Tree< T >::changeRoot | ( | const value_type & | d | ) | [inherited] |
Sustituye por "d" el valor almacenado en la raíz del árbol.
| void Bin_Tree< T >::changeChild | ( | unsigned | n, | |
| const value_type & | d | |||
| ) | [inherited] |
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.
Pone al árbol "T" como sub-árbol izquierdo de "*this".
"*this" si "T" está vacío. ! isEmpty()
Pone al árbol "T" como sub-árbol derecho de "*this".
"*this" si "T" está vacío. ! isEmpty() | value_type& Bin_Tree< T >::dato | ( | ) | const [inline, inherited] |
| value_type& Bin_Tree< T >::operator * | ( | ) | const [inline, inherited] |
| value_type* Bin_Tree< T >::operator-> | ( | ) | const [inline, inherited] |
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< T >::isLeaf | ( | ) | const [inline, inherited] |
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< T >::isRoot | ( | ) | const [inline, inherited] |
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< T >::refs | ( | ) | const [inline, inherited] |
| bool Arbol_Rojinegro< T >::color |
1.4.7