Home Algoritmos y Estructuras de Datos (VJ1215)

Curso 2023/2024

Ejemplos de errores en el ejercicio 9.g del tema 3

La siguiente solución contiene varios errores. Piensa cuáles son.

void Conjunto::vaciar() {
   return vaciar(raiz);
}

void Conjunto::vaciar(Nodo * & n) {
   if (n->izquierdo != nullptr) {
      vaciar(n->izquierdo);
      delete n; 
   } else if (n->derecho != nullptr) {
      vaciar(n->derecho);
      delete n:
   }
}
      

¿Por qué es incorrecta?

Aquí hay 4 errores:

  1. Se utiliza incorrectamente return.

  2. El segundo método falla si raiz vale nullptr.

  3. Sobra else (y al corregir eso no hay que hacer delete dos veces).

  4. Falta que, tras vaciar el conjunto, quede 0 en la talla y nullptr en la raíz.

Por otra parte, aunque no sea un error, no es necesario pasar n por referencia.