Parcial Mayo 2021 - Ejercicio 1

Parcial Mayo 2021 - Ejercicio 1

de Juan Francisco Tauber Delgado -
Número de respuestas: 2

Buenas,
No me queda claro por qué la solución, en las condiciones del segundo y cuarto if, usa
(t->dato < sup-1) y (t->dato > inf+1),
si en la consigna pide mayor estricto que inf y menor estricto que sup.
Al poner el -1 y el +1, ¿No estamos perdiendo 2 posibles números?
Por ejemplo, estoy parado en un nodo del árbol que en el dato tiene un 4 y, el inf que me pasan es 3. Por cómo está resuelto ¿No se perdería de agregar el 4 a la lista?
Desde ya muchas gracias

En respuesta a Juan Francisco Tauber Delgado

Re: Parcial Mayo 2021 - Ejercicio 1

de Fernando Fernandez -
Hola.
Observa que la condición del segundo if se evalúa siempre ( no es un else if) y que en ella no está el -1 ni el +1. En el ejemplo que ponés, y si lo completamos suponiendo que sup es 5 o más, se va a cumplir que 4 es mayor que 3 y menor que 5, por lo que se va a crear nodoX con valor 4 y va a quedar como primer elemento de la lista.

¿El ejemplo que pusiste corresponde a la duda que tenías? Porque en él no influyen el -1 y el +1. Creo que tu duda es por qué no se hace la llamada al subárbol izquierdo, ya que podría haber algún elemento en él mayor a inf. Y la explicación es que no puede haber, porque el máximo valor posible en ese subárbol es 3, y como vos decís, se pide que los elementos sean mayores estrictos a inf.
No incluir el -1 y el +1 no provocaría un resultado incorrecto, pero podría recorrer nodos de manera innecesaria.