Ver Mensaje Individual
  #1 (permalink)  
Antiguo 08/07/2011, 19:43
pnsativo
 
Fecha de Ingreso: julio-2011
Mensajes: 2
Antigüedad: 13 años, 4 meses
Puntos: 0
Pregunta Arboles Binarios

Bueno... Soy Nuevo En El Foro ...Poseo un Código De Arboles binarios ,
ya logre que arrojara InOrden, PostOrden y PreOrden, Pero Lo que
ahora necesito es Que Me Arroje el resultado del numero de hojas
totales que posee este arbol... Ayuda !!!!

Código C++:
Ver original
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. struct nodo
  5. {
  6.    struct nodo *izquierdaPtr;
  7.    int dato;
  8.    struct nodo *derechaPtr;
  9. };
  10.  
  11. typedef struct nodo NODO;
  12. typedef NODO *ARBOLNODOPTR;
  13.  
  14. void insertaNodo(ARBOLNODOPTR *arbolPtr, int valor)
  15. {
  16.  if (*arbolPtr == NULL)
  17.  {
  18.     *arbolPtr = (ARBOLNODOPTR)malloc(sizeof(NODO));
  19.     if (*arbolPtr != NULL)
  20.     {
  21.      (*arbolPtr)->dato = valor;
  22.      (*arbolPtr)->izquierdaPtr = NULL;
  23.      (*arbolPtr)->derechaPtr = NULL;
  24.     }
  25.     else
  26.     {
  27.      printf("%d no insertado. No hay memoria disponible.\n", valor);
  28.     }
  29.  }
  30.  else
  31.  if (valor < (*arbolPtr)->dato)
  32.  {
  33.     insertaNodo(&((*arbolPtr)->izquierdaPtr), valor);
  34.  }
  35.  else
  36.  if (valor > (*arbolPtr)->dato)
  37.     insertaNodo(&((*arbolPtr)->derechaPtr), valor);
  38.     else
  39.     printf("Igual");
  40. }
  41.  
  42. void inOrder(ARBOLNODOPTR arbolPtr)
  43. {
  44.  if (arbolPtr != NULL)
  45.  {
  46.     inOrder(arbolPtr->izquierdaPtr);
  47.     printf("%3d", arbolPtr->dato);
  48.     inOrder(arbolPtr->derechaPtr);
  49.  }
  50. }
  51.  
  52.  
  53.  
  54. void preOrder(ARBOLNODOPTR arbolPtr)
  55. {
  56.  if (arbolPtr != NULL)
  57.  {
  58.     printf("%3d", arbolPtr->dato);
  59.     preOrder(arbolPtr->izquierdaPtr);
  60.     preOrder(arbolPtr->derechaPtr);
  61.  }
  62. }
  63.  
  64. void postOrder(ARBOLNODOPTR arbolPtr)
  65. {
  66.  if (arbolPtr != NULL)
  67.  {
  68.     postOrder(arbolPtr->izquierdaPtr);
  69.     postOrder(arbolPtr->derechaPtr);
  70.     printf("%3d", arbolPtr->dato);
  71.  }
  72. }
  73.  
  74.  
  75. main()
  76. {
  77.  int i, item;
  78.  ARBOLNODOPTR raizPtr = NULL;
  79.  
  80.  for (i=1; i <= 10; i++)
  81.  {
  82.      printf("ingrese elemento: ");
  83.      scanf("%d",&item);
  84.      insertaNodo(&raizPtr, item);
  85.  }
  86.  printf("\n\nEl preOrden es:\n");
  87.  preOrder(raizPtr);
  88.  printf("\n\nEl inOrden es:\n");
  89.  inOrder(raizPtr);
  90.  printf("\n\nEl postOrden es:\n");
  91.  postOrder(raizPtr);
  92.  printf("\n");
  93.  system("pause");
  94. }