Hola,
se me ocurre una solución así a bote pronto en el caso de que tengas el árbol representado con memoria estática (un vector, por ejemplo).
Tal que así:
0 1 2 3 4 5 6 7 ... (indice del vector)
A B C D E F G H ... (nodo)
-1 0 0 1 1 2 2 3 ... (padre del nodo)
Entonces podrías recorrerlo del final hacia arriba buscando el padre y guardándote la profundidad. Por cierto, supongo que con longitud te refieres a la altura del árbol, ¿no?
Podría ser...
suponiendo el árbol representado en un vector V:
MaxProf = 0;
for(i = longitud(V); i > 0 ; i--){
Profund = 0; j = longitud(V);
while(j != -1) {
i = V[ i ];
Profund++;
}
if(Profund>MaxProf)MaxProf = Profund;
}
Altura = MaxProf;
Puff, si lo tienes con punteros... no se me ocurre cómo hacerlo, tendría que buscar en algún libro... siento no poder darte nada mejor:(
Bueno, un saludo.