Pues bueno, la respuesta que te dí me parece suficiente. Como sabrás, una clase es semánticamente igual a una estructura. En fin, que si trabajas en C, cambia "class" por "struct".
La idea es que un arbol es un contenedor para una lista, donde cada nodo de la lista es a su vez un contenedor para otra lista. Así ad infinitum. En particular, por ejemplo, un árbol binario es aquel que sólo contiene dos nodos por lista. Primero tienes que implementar una lista (o un vector dinámico, o una pila o una cola o cualquier contenedor). Supondré que ya la tienes:
struct CDato {
// etc
};
struct CNodo {
struct CDato* pDato;
struct CNodo* pPrev;
struct CNodo* pSig;
};
Entonces, lo que tienes que hacer es que cada nodo apunte además al primer nodo de la lista hija:
struct CNodo {
struct CDato* pDato;
struct CNodo* pPrev;
struct CNodo* pSig;
struct CNodo* pHijo;
};
Además, sería un buen detalle si a su vez agregases una referencia al padre:
struct CNodo {
struct CDato* pDato;
struct CNodo* pPrev;
struct CNodo* pSig;
struct CNodo* pPadre;
};
Ahora, evidentemente todo radica en las funciones de búsqueda, ordenamiento e inserción que tendrás que realizar. Pero ya no deberías tener problemas. La forma más sencilla es recorrer el árbol de izquierda a derecha, o como si fuese un árbol binario. Saludos.