CLASE ÁRBOL
Cada
nodo debe contener el campo datos (datos a almacenar) y dos campos punteros
esto en la estructura de un árbol binario
como en la figura

Uno
al subárbol izquierdo y otro al derecho y esto se conoce como puntero izquierdo
y derecho. Un valor a nulo indica un árbol vació.
Algoritmo
de la estructura de un árbol:
Nodo
Subárbol izquierdo <puntero
a nodo>
datos
<tipodato>
Subárbol derecho <puntero
a nodo>
Fin nodo
Observar
la figura
![]()


Se explica mejor en el siguiente dibujo


Árbol binario y su estructura en nodos.
Representación
class árbol (C++)
class árbol {
class nodo {
char *datos;
nodo *derecho;
nodo *izquierdo;
friend
class árbol;
};
public:
nodo *raíz<; // cima del árbol
(raíz)
árbol (void) {raíz = NULL; } ;
// … otras funciones
};
Representación
class árbol (C++)
//Árbol binario
template <class T>
class ÁrbolBin;
// declara un objeto nodo
árbol de un árbol binario
template <class T>
class NodoArbol
{
private:
// apunta a los hijos izquierdo y derecho del nodo
NodoArbol <T> *izquierdo;
NodoArbol <T> *derecho:
public:
// miembro público, se puede actualizar su valor
T datos;
// constructor
NodoArbol {const T &
item, NodoArbol <T> *ptri=NULL, NodoArbol <T> *ptrd=NULL);
// métodos de acceso a los
campos puntero
NodoArbol <T>
*izquierdo() const;
NodoArbol <T>
*derecho() const;
// hacer a ArbolBin un amigo
ya que necesita acceder a los campos
// puntero izquierdo y
derecho del nodo.
friend class ArbolBin <T>;
};
La descripción de la clase ArbolBin es como sigue. El constructor
inicializa los datos y los campos puntero. El uso del puntero por omisión NULL hace que el nodo se inicialice como
un nodo hoja. Con un puntero P de NodoArbol que se pasa como parámetro, el
constructor conecta P como hijo izquierdo o derecho del nuevo nodo. Los métodos
de acceso Izquierdo y Derecho devuelven el valor
correspondiente del puntero. La clase ÁrbolBin
se declara como amiga de NodoArbol y
puede modificar los punteros.