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

 

 


Tema destacado: Introducción a la Factorización De Semiprimos (RSA)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Minimo Valor y Maximo Valor de Un Arbol
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Minimo Valor y Maximo Valor de Un Arbol  (Leído 7,873 veces)
Jupiter34

Desconectado Desconectado

Mensajes: 24


Ver Perfil
Minimo Valor y Maximo Valor de Un Arbol
« en: 16 Noviembre 2012, 16:26 pm »

Estimados,

Intengo encontrar el maximo valor, de un arbol, pero algo hago mal...Eh tratado de adaptar codigo, pero no estoy entendiendo...Me dan una mano? Muchas gracias!

Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4.  
  5. typedef struct arbol{
  6. int dato;
  7. struct arbol *der;
  8. struct arbol *izq
  9. }treenode;
  10.  
  11. void crear(treenode **arb);
  12. void mostrarOrden (treenode *hoja);
  13. void mostrarPreorden(treenode *hoja);
  14. void mostrarPosorden(treenode *hoja);
  15. int contarNodosHoja(treenode *p);
  16. int sumarMultiplosDeCuatro(treenode *p);
  17. treenode *primerNodo(treenode *hoja);
  18. int sumatoriaImparesRaiz(treenode *p, int raiz);
  19. int contarImparesRaiz(treenode *p, int raiz);
  20. void insertar(treenode **hoja,int num);
  21. int maximo(treenode *p);
  22. int main(){
  23.  
  24.    treenode *arb=NULL;
  25.    int max=0;
  26.  
  27.  
  28.  
  29.    crear(&arb);
  30.  
  31.  
  32.    printf("\nMuestra En Orden\n");
  33.    mostrarOrden (arb);
  34.    printf("\nMuestra En PreOrden\n");
  35.    mostrarPreorden(arb);
  36.    printf("\nMuestra En PosOrden\n");
  37.    mostrarPosorden(arb);
  38.  
  39.    max=maximo(arb);
  40.    printf("\Maximo: %d\n",max);
  41.  
  42.  
  43. }
  44. //Crea el Arbol
  45. void crear(treenode **hoja){
  46.    int num;
  47.    printf("Ingrese Numero: ");
  48.    scanf("%d",&num);
  49.  
  50.    while(num!=-1){
  51.        insertar(&(*hoja),num);
  52.        printf("Ingrese Numero: ");
  53.        scanf("%d",&num);
  54.    }
  55. }
  56. //Inserta Hoja al Arbol
  57. void insertar(treenode **hoja,int num){
  58.    if(num==-1){
  59.       return;
  60.    }
  61.    if(*hoja==NULL){
  62.        (*hoja)=(treenode*)malloc(sizeof(treenode));
  63.        (*hoja)->dato=num;
  64.        (*hoja)->der=NULL;
  65.        (*hoja)->izq=NULL;
  66.    }else{
  67.        //Si el Numero es Mayor va a la Derecha
  68.        if(num>(*hoja)->dato){
  69.            insertar(&(*hoja)->der,num);
  70.        }else{
  71.            insertar(&(*hoja)->izq,num);
  72.        }
  73.    }
  74.    return;
  75. }
  76. //Mostrar en orden (Izquierda - Raiz - Derecha)
  77. void mostrarOrden (treenode *hoja){
  78.    if (hoja!=NULL){
  79.        mostrarOrden(hoja->izq);
  80.        printf("%d ",hoja->dato);
  81.        mostrarOrden(hoja->der);
  82.    }
  83.    return;
  84. }
  85. //Mostrar en preOrden (Raiz - Izquierda - Derecha)
  86. void mostrarPreorden(treenode *hoja){
  87.    if (hoja!=NULL){
  88.        printf("%d ",hoja->dato);
  89.        mostrarPreorden(hoja->izq);
  90.        mostrarPreorden(hoja->der);
  91.    }
  92.    return;
  93. }
  94. //mostrar en posOrden (Izquierda - Derecha - Raiz)
  95. void mostrarPosorden(treenode *hoja){
  96.    if (hoja!=NULL){
  97.        mostrarPosorden(hoja->izq);
  98.        mostrarPosorden(hoja->der);
  99.        printf("%d ",hoja->dato);
  100.    }
  101.    return;
  102. //Funcion Maximo
  103. int maximo(treenode *p){
  104.  
  105.     if(p==NULL){
  106.         return -99;
  107.     }else{
  108.        int temp ;
  109.        temp=max( maximo(p->izq), maximo(p->der));
  110.        return(  max( p->dato , temp ) );
  111.      }
  112. }
  113. }

Si alguno tiene una idea, del por que no encuentra el dato y me entrega basura...voy a estar mas que agradecido! Saludos a todos!


En línea

Jupiter34

Desconectado Desconectado

Mensajes: 24


Ver Perfil
Re: Minimo Valor y Maximo Valor de Un Arbol
« Respuesta #1 en: 16 Noviembre 2012, 18:17 pm »

Hecho!

//Maximo Nodo
int maxNodo(treenode *p){

    if(p==NULL){
        return -1;
    }else{
        if(p->der==NULL){
            return p->dato;
        }else{
            return maxNodo(p->der);
        }

    }

}
//MIN NODO
int minNodo(treenode *p){

    if(p==NULL){
        return -1;
    }else{
        if(p->izq==NULL){
            return p->dato;
        }else{
            return minNodo(p->izq);
        }

    }

}

Por las que alguien lo necesite!


En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

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