Java iterators for C++:
 All Classes Namespaces Files Functions Variables Typedefs Friends Macros Pages
Public Types | Private Member Functions | Static Private Member Functions | Private Attributes | Friends | List of all members
TL::Tree_Node< E > Class Template Reference

Nodos almacenados en el árbol. More...

#include <Tree_L.h>

Public Types

typedef E value_type
 Nombre estándar del tipo de elemento contenido. More...
 

Private Member Functions

 Tree_Node (const value_type &d)
 Constructor de vector. More...
 
unsigned Abs_n_child () const
 Retorna el valor absoluto del campo "m_n_child". More...
 

Static Private Member Functions

static Tree_Node< E > * Get_New (const value_type &d)
 Crea un nuevo nodo y lo inicializa con "d". More...
 

Private Attributes

value_type m_data
 Valor almacenado en el nodo. More...
 
unsigned m_refCount
 Cantidad de punteros hacia mi. More...
 
int m_n_child
 Soy el el hijo número "(m_n_child - 1)" de mi padre. More...
 
Tree_Node< E > * m_left_child
 Puntero al nodo hijo más izquierdo. More...
 
Tree_Node< E > * m_right_brother
 Puntero al nodo hermano o al padre. More...
 

Friends

class Tree< E >
 

Detailed Description

template<class E>
class TL::Tree_Node< E >

Nodos almacenados en el árbol.

Definition at line 31 of file Tree_L.h.

Member Typedef Documentation

template<class E>
typedef E TL::Tree_Node< E >::value_type

Nombre estándar del tipo de elemento contenido.

Definition at line 34 of file Tree_L.h.

Constructor & Destructor Documentation

template<class E>
TL::Tree_Node< E >::Tree_Node ( const value_type d)
inlineprivate

Constructor de vector.

Definition at line 36 of file Tree_L.h.

Member Function Documentation

template<class E >
Tree_Node< E > * TL::Tree_Node< E >::Get_New ( const value_type d)
inlinestaticprivate

Crea un nuevo nodo y lo inicializa con "d".

  • Para mejorar la eficiencia, no incializa los punteros del nodo.
  • Si la macro USE_v_Alive de compilación existe, también agrega el nuevo nodo al contenedor global Tree::m_v_Alive[], de manera que es posible saber si un puntero a un nodo está o no en uso.
  • En realidad sobra usar este método, pero la utilidad de usarlo es que es posible examinar Tree::m_v_Alive[] para saber si los métodos de árbol están correctamente implementados.

Definition at line 224 of file Tree_L.h.

template<class E >
unsigned TL::Tree_Node< E >::Abs_n_child ( ) const
inlineprivate

Retorna el valor absoluto del campo "m_n_child".

  • Hay que tomar en cuenta que que m_n_child está incrementado en +int(1) porque la marca de "puntero al padre" es un valor negativo, y como hay un hijo número cero int(0), no sería posible marcar como "puntero al padre" a ese nodo
  • Esta rutina también existe para documentar el truco del "puntero al padre", pues más directo habría sido usar la función abs() definida en #include <cstdlib>
  • En otras palabras, parte de la invariante de un nodo siempre será que (m_n_child != 0) porque siempre int(0) == int(-0)

Definition at line 594 of file Tree_L.h.

Friends And Related Function Documentation

template<class E>
friend class Tree< E >
friend

Definition at line 33 of file Tree_L.h.

Member Data Documentation

template<class E>
value_type TL::Tree_Node< E >::m_data
private

Valor almacenado en el nodo.

Definition at line 40 of file Tree_L.h.

template<class E>
unsigned TL::Tree_Node< E >::m_refCount
private

Cantidad de punteros hacia mi.

Definition at line 41 of file Tree_L.h.

template<class E>
int TL::Tree_Node< E >::m_n_child
private

Soy el el hijo número "(m_n_child - 1)" de mi padre.

Definition at line 42 of file Tree_L.h.

template<class E>
Tree_Node<E>* TL::Tree_Node< E >::m_left_child
private

Puntero al nodo hijo más izquierdo.

Definition at line 43 of file Tree_L.h.

template<class E>
Tree_Node<E>* TL::Tree_Node< E >::m_right_brother
private

Puntero al nodo hermano o al padre.

Definition at line 44 of file Tree_L.h.


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