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


 


Tema destacado: Píldoras formativas en seguridad de la información


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse)
| | |-+  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 219 veces)
Beginner Web

Desconectado Desconectado

Mensajes: 285


youtu.be/0YhflLRE-DA


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

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 por Beginner Web » En línea

Código
  1. #Programadora: Ana Kéldysh
  2. #Edad: 14 años
  3. #!/bin/bash
  4. echo Hola
MAFUS


Desconectado Desconectado

Mensajes: 1.410



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

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


En línea

while(is_alive(yourself)) {
    make_true(yourself, yourdreams);
}
CalgaryCorpus

Desconectado Desconectado

Mensajes: 246


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

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

Beginner Web

Desconectado Desconectado

Mensajes: 285


youtu.be/0YhflLRE-DA


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

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

Código
  1. #Programadora: Ana Kéldysh
  2. #Edad: 14 años
  3. #!/bin/bash
  4. echo Hola
CalgaryCorpus

Desconectado Desconectado

Mensajes: 246


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

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

YreX-DwX

Desconectado Desconectado

Mensajes: 296



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

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:  

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