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.