Advertisement
juanjo12x

Altura_Arbol

Jun 12th, 2014
255
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.05 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. typedef struct nodo{
  5.     int valor;
  6.     struct nodo* ptrHI;
  7.     struct nodo* ptrHD;
  8. } TNodo;
  9. void crear_arbol(TNodo ** ptrRaiz);
  10. void inserta_nodo(TNodo **ptrRaiz, int valor);
  11. int niveles (TNodo**);
  12.  
  13. void crear_arbol(TNodo ** ptrRaiz){
  14.     *ptrRaiz = NULL;
  15. }
  16.  
  17. void inserta_nodo(TNodo **ptrRaiz, int valor){
  18.     TNodo *ptrHoja, *ptrRecorrido, *ptrPadre;
  19.     ptrHoja = (TNodo*)malloc(sizeof(TNodo));
  20.     ptrHoja->valor = valor;
  21.     ptrHoja->ptrHI=ptrHoja->ptrHD=NULL;
  22.    
  23.     if(*ptrRaiz){
  24.         ptrRecorrido = *ptrRaiz;
  25.         ptrPadre = NULL;
  26.        
  27.         while (ptrRecorrido){
  28.             ptrPadre = ptrRecorrido;
  29.             if (ptrRecorrido->valor > valor)
  30.                 ptrRecorrido = ptrRecorrido->ptrHI;
  31.             else
  32.                 ptrRecorrido = ptrRecorrido->ptrHD;                  
  33.         }
  34.         if (ptrPadre->valor > valor)
  35.             ptrPadre->ptrHI = ptrHoja;
  36.         else
  37.             ptrPadre->ptrHD = ptrHoja;
  38.     }
  39.     else{
  40.      *ptrRaiz = ptrHoja;  
  41.     }          
  42. }
  43. int es_nodo_hoja(TNodo *ptrRaiz){
  44.     if (ptrRaiz->ptrHI ==NULL) return 1;
  45.     if (ptrRaiz->ptrHD ==NULL) return 1;
  46.     return 0;
  47. }
  48. int niveles(TNodo** raiz){
  49.     TNodo* aux=*raiz;TNodo*aux1;
  50.     if (aux==NULL)
  51.        return 0;
  52.    else
  53.    {   aux1=aux->ptrHI;
  54.        /* consigo el nivel de cada hijo */
  55.        int lDepth = niveles(&aux1);
  56.        aux1=aux->ptrHD;
  57.        int rDepth = niveles(&aux1);
  58.  
  59.        /* verifico quien es mayor */
  60.        if (lDepth > rDepth)
  61.            return(lDepth+1);
  62.        else return(rDepth+1);
  63.    }
  64. }
  65. int main(int argc, char** argv) {
  66.     TNodo *ptrRaiz;
  67.     int nivel;
  68.     crear_arbol(&ptrRaiz);
  69.     inserta_nodo(&ptrRaiz, 15);
  70.     inserta_nodo(&ptrRaiz, 10);
  71.     inserta_nodo(&ptrRaiz, 17);
  72.     inserta_nodo(&ptrRaiz, 19);
  73.     inserta_nodo(&ptrRaiz, 16);
  74.     inserta_nodo(&ptrRaiz, 5);
  75.     inserta_nodo(&ptrRaiz, 14);
  76.     inserta_nodo(&ptrRaiz, 20);
  77.     nivel=niveles(&ptrRaiz);
  78.     printf("%d\n",nivel);
  79.     return (EXIT_SUCCESS);
  80. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement