Home Algoritmos y Estructuras de Datos (VJ1215)

Curso 2023/2024

Solución del ejercicio 4.a del tema 3

int Conjunto::altura() const {
   return altura(raiz);
}

int Conjunto::altura(Nodo * n) const {
   if (n == nullptr)
      return -1;
   int alturaIzquierdo = altura(n->izquierdo),
       alturaDerecho = altura(n->derecho);
   if (alturaIzquierdo >= alturaDerecho)
      return 1 + alturaIzquierdo;
   else
      return 1 + alturaDerecho;
}
      

En C++ podemos también utilizar max:

int Conjunto::altura() const {
   return altura(raiz);
}

int Conjunto::altura(Nodo * n) const {
   if (n == nullptr)
      return -1;
   return 1 + max(altura(n->izquierdo), altura(n->derecho));
}
      

Este algoritmo tiene coste temporal O(n), siendo n la talla del conjunto.