Curso 2022/2023
void Conjunto::incrementarTodos() { incrementarTodos(raiz); } void Conjunto::incrementarTodos(Nodo * n) { if (n == nullptr) return; n->dato++; incrementarTodos(n->izquierdo); incrementarTodos(n->derecho); }
Observa que no hay ninguna necesidad de pasar n
por referencia
para modificar n->dato
, no estamos modificando n
.
El coste temporal de este algoritmo es O(n), siendo n la talla del conjunto, debido a que se hacen O(n) llamadas recursivas y el coste propio de cada llamada es O(1).
Su coste espacial es O(n) debido a que tenemos un árbol con n nodos, a lo que se suma el coste de la pila de llamadas recursivas que en el peor caso, si tuviéramos un árbol de altura n, también sería O(n).