Parte 2: Código de Programa para la Creación de un Árbol Binario


Rutina o código de programa para la creación de un árbol binario, en memoria estática y dinámica


Autor 2: Silvia Guardati
Libro: Estructura de Datos Orientada a Objetos, Algoritmos con C++.
Año: 2007

A continuación se presenta el código en lenguaje C++ correspondiente a la definición de plantillas de las clases NodoArbol y ArbolBinario.

/* Prototipo de la plantilla de la clase ArbolBinario. De esta manera, en la clase NodoArbol se podrá hacer referencia a ella. */
template <class T>
class ArbolBinario;

/* Declaración de la clase NodoArbol. Cada nodo almacena la información (que es la razón de ser de la estructura tipo árbol) y las direcciones de sus hijos izquierdo y derecho. En la sección pública se establece la relación de amistad entre esta clase y la clase ArbolBinario para que los métodos de esta última puedan tener acceso a sus miembros privados. */

template <class T>
class NodoArbol
{
         private:
                   T Info;
                   NodoArbol<T> *HijoIzq;
                   NodoArbol<T> *HijoDer;
         public:
                   NodoArbol();
                   T RegresaInfo();
                   friend class ArbolBinario<T>;
};

/* Declaración del método constructor por omisión. Inicializa las ligas a los subárboles con el valor de NULL, indicando que están vacías */

template <class T>
NodoArbol<T>::NodoArbol()
{
HijoIzq= NULL;
HijoDer= NULL;
}

/* Método que permite conocer la información almacenada en el nodo */
template <class T>
T NodoArbol<T>::RegresaInfo()
{
return Info;
}

/* Declaración de la clase ArbolBinario. Su atributo es un punter al nodo raíz */
template <class T>
class ArbolBinario
{
         private:
                   NodoArbol<T> *Raiz;
         public:
                   ArbolBinario();
                   /* en esta sección se declaran los métodos de acceso y modificación a los miembros de la clase */
};


La clase NodoArbol se utiliza para representar un nodo de árbol binario, por lo tanto se incluyen tres atributos: uno para almacenar la información de cualquier tipo (tipo T) y los otros dos para almacenar la dirección de los subárboles izquierdo y derecho respectivamente, los cuales son punteros a objetos de la misma clase. La sección pública contiene tres miembros, dependiendo de la definición de la clase que se haga. Estos elementos son: el método constructor, un método que facilita conocer la información guardada, y la declaración de amistad con la clase ArbolBinario. Esta última declaración permite que los métodos de la clase amiga tengan acceso a sus miembros privados y protegidos. A partir de la clase NodoArbol se define la clase ArbolBinario, la cual está formada por un atributo único (tipo puntero a un objeto NodoArbol) que representa el puntero al nodo raíz del árbol binario. Este puntero permite el acceso a todos los elementos del árbol ya que la raíz tiene la dirección de sus dos hijos, éstos, la dirección de sus respectivos hijos y así hasta llegar a nodos terminales. En la sección pública se declaran los métodos necesarios para tener acceso a los atributos, y de esta manera manipular la información almacenada. 

Comentarios