elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Como proteger una cartera - billetera de Bitcoin


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  pasar procedimientos recursivos a funciones en bst
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: pasar procedimientos recursivos a funciones en bst  (Leído 2,247 veces)
Beginner Web


Desconectado Desconectado

Mensajes: 634


youtu.be/0YhflLRE-DA


Ver Perfil
pasar procedimientos recursivos a funciones en bst
« en: 6 Enero 2019, 05:38 am »

Hola queria saber como puedo pasar los siguientes "prodecimientos" a funciones, en el primer algoritmo se modifica el valor de una variable pasada por referencia el cual en el main me dice la cantidad exacta de vocales de un arbol binario de busqueda

Código
  1. void contarNodosQueContenganVocales(pnodo arbol, int &vocales)
  2. {
  3. if(arbol!=NULL){
  4. switch(arbol->dato){
  5. case 'A':
  6. case 'E':
  7. case 'I':
  8. case 'O':
  9. case 'U': vocales++;
  10. }
  11. contarNodosQueContenganVocales(arbol->izq,vocales);
  12. contarNodosQueContenganVocales(arbol->der,vocales);
  13. }
  14. }

Y este  otro procedimiento cuenta la cantidad de nodos que tienen un solo hijito
Código
  1. void cantidad_nodos(arbol a, int &c)
  2. {
  3. if(a!=NULL){
  4. if((a->izq==NULL && a->der!=NULL) || (a->izq!=NULL && a->der==NULL))
  5. c++;
  6. cantidad_nodos(a->izq,c);
  7. cantidad_nodos(a->der,c);
  8. }
  9. }
:laugh:

uno por uno MAFUS


« Última modificación: 6 Enero 2019, 09:53 am por Beginner Web » En línea

7w7
MAFUS


Desconectado Desconectado

Mensajes: 1.603



Ver Perfil
Re: pasar procedimientos recursivos a funciones en bst
« Respuesta #1 en: 6 Enero 2019, 09:28 am »

Entiendo qué quieres juntar las dos en una sola función.


En línea

CalgaryCorpus


Desconectado Desconectado

Mensajes: 323


Ver Perfil WWW
Re: pasar procedimientos recursivos a funciones en bst
« Respuesta #2 en: 6 Enero 2019, 16:24 pm »

No pases variable alguna, solo devuelve el valor que te lo interesa.

Tipicamente será

condicion = ...  // Chequear dato en nodo actual

return condicion + f(nodo izquierdo) + f(nodo derecho)

Posiblente el modo null será especial.
En línea

Aqui mi perfil en LinkedIn, invitame un cafe aqui
Beginner Web


Desconectado Desconectado

Mensajes: 634


youtu.be/0YhflLRE-DA


Ver Perfil
Re: pasar procedimientos recursivos a funciones en bst
« Respuesta #3 en: 8 Enero 2019, 00:54 am »

No pases variable alguna, solo devuelve el valor que te lo interesa.

Tipicamente será

condicion = ...  // Chequear dato en nodo actual

return condicion + f(nodo izquierdo) + f(nodo derecho)

Posiblente el modo null será especial.
Ya he logrado resolverlos gracias Señor CalgaryCorpus  ;-)
Código
  1. int vocales(arbol a)
  2. {
  3. int contador=0;
  4. if(a!=NULL){
  5. contador=vocales(a->izq)+vocales(a->der);
  6. switch(a->dato){
  7. case 'A':
  8. case 'E':
  9. case 'I':
  10. case 'O':
  11. case 'U': contador++;
  12. }
  13. }
  14. return contador;
  15. }
  16.  
  17. int cantidad_nodos(arbol a)
  18. {
  19. int contador=0;
  20. if(a!=NULL){
  21. contador=cantidad_nodos(a->izq)+cantidad_nodos(a->der);
  22. if((a->izq!=NULL && a->der==NULL) || (a->izq==NULL && a->der!=NULL))
  23. contador++;
  24. }
  25. return contador;
  26. }
  27.  
Asi queda mas elegante que estar haciendo un procedimiento recursivo :)
En línea

7w7
CalgaryCorpus


Desconectado Desconectado

Mensajes: 323


Ver Perfil WWW
Re: pasar procedimientos recursivos a funciones en bst
« Respuesta #4 en: 8 Enero 2019, 14:23 pm »

Puedo estar equivocado, pero creo que cantidad_nodos debería sumar siempre uno.
No parece bien los if de la línea 22
Algo así:

Código
  1. int cantidad_nodos(arbol a) {
  2.   int contador=0;
  3.   if(a!=NULL) {
  4.      contador=1 + cantidad_nodos(a->izq)+cantidad_nodos(a->der);
  5.   }
  6.   return contador;
  7. }
En línea

Aqui mi perfil en LinkedIn, invitame un cafe aqui
K-YreX
Moderador
***
Desconectado Desconectado

Mensajes: 1.008



Ver Perfil
Re: pasar procedimientos recursivos a funciones en bst
« Respuesta #5 en: 10 Enero 2019, 04:05 am »

Puedo estar equivocado, pero creo que cantidad_nodos debería sumar siempre uno.

Aunque lo ha llamado <cantidad_nodos> lo que quiere es contabilizar los nodos que tienen un único hijo, por eso está implementado así :-X

Y este  otro procedimiento cuenta la cantidad de nodos que tienen un solo hijito
En línea

Código
  1. cout << "Todos tenemos un defecto, un error en nuestro código" << endl;
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines