Título: Error suma arboles c++ Publicado por: Josh13 en 4 Mayo 2018, 20:21 pm Hola, perdón , tengo un problema en un ejercicio de suma de arboles binarios de búsqueda.
Este es el enunciado : Codificar una función entera en C++ que devuelva como resultado la suma de las claves impares contenidas en nodos con dos hijos. Y este es mi código: int sumaClavesImparesDosHijo (pNodoArbol &nodo) { int resul; if(nodo != NULL){ if(nodo->clave %2 != 0){ if((nodo->iz != NULL) && (nodo->de != NULL)){ resul += nodo->clave; } resul = sumaClavesImparesDosHijo(nodo->iz) + sumaClavesImparesDosHijo(nodo->de); } } return resul; } int Arbol::sumaClavesImparesDosHijos () { int resul = 0; resul = sumaClavesImparesDosHijo(raiz); return resul; } Y la suma me da 1877928545 , cosa que no tiene sentido. Tendría que dar 128. Título: Re: Error suma arboles c++ Publicado por: MAFUS en 4 Mayo 2018, 22:13 pm Esta parte está mal:
Código: resul = sumaClavesImparesDosHijo(nodo->iz) + sumaClavesImparesDosHijo(nodo->de); Sí ya haces la suma dentro del if no debes cambiar otra vez resul. Sólo debes llamar la función con los nodos iz y de si estos existen, ya se encargará la primera parte de la función de realizar la suma. |