Aunque me interese en C++, si sabéis algo en pseudocódigo me vendría perfecto. Sin embargo, lo máximo que he conseguido ha sido una extraña versión mejorada de calcular el número de nodos, os paso la versión más larga y más clara:
Nota: hi y hd devuelven el "hijo izquierdo" e "hijo derecho" respectivamente. es_nulo es un boolenado que devuelve si un árbol vacío.
Nota2: Se trata de árboles de enteros.
Código: Seleccionar todo
int altura(Arbol<int> &a) {
int alt = 0;
if (not a.es_nulo()) {
Arbol<int> a1;
Arbol<int> a2;
a1.hi(a);
a2.hd(a); // podríamos usar a.hd() para ahorrar memoria, pero así queda más claro; no busco rendimiento por ahora
int y = altura(a1);
int z = altura(a2);
if (y > z) alt = 1 + y;
else alt = 1 + z;
}
return alt;
}
Código: Seleccionar todo
1
1 1
0 0 0 0