Advertisement
juanjo12x

En_Orden_Arbol

Jun 15th, 2014
215
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.58 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.  
  10. void crear_arbol(TNodo ** ptrRaiz);
  11. void inserta_nodo(TNodo **ptrRaiz, int valor);
  12. void en_orden(TNodo * ptrRaiz);
  13.  
  14. void crear_arbol(TNodo ** ptrRaiz){
  15.     *ptrRaiz = NULL;
  16. }
  17.  
  18. void inserta_nodo(TNodo **ptrRaiz, int valor){
  19.     TNodo *ptrHoja, *ptrRecorrido, *ptrPadre;
  20.     ptrHoja = (TNodo*)malloc(sizeof(TNodo));
  21.     ptrHoja->valor = valor;
  22.     ptrHoja->ptrHI=ptrHoja->ptrHD=NULL;
  23.    
  24.     if(*ptrRaiz){
  25.         ptrRecorrido = *ptrRaiz;
  26.         ptrPadre = NULL;
  27.        
  28.         while (ptrRecorrido){
  29.             ptrPadre = ptrRecorrido;
  30.             if (ptrRecorrido->valor > valor)
  31.                 ptrRecorrido = ptrRecorrido->ptrHI;
  32.             else
  33.                 ptrRecorrido = ptrRecorrido->ptrHD;                  
  34.         }
  35.         if (ptrPadre->valor > valor)
  36.             ptrPadre->ptrHI = ptrHoja;
  37.         else
  38.             ptrPadre->ptrHD = ptrHoja;
  39.     }
  40.     else{
  41.      *ptrRaiz = ptrHoja;  
  42.     }          
  43. }
  44. void en_orden(TNodo * ptrRaiz){
  45.     if (ptrRaiz){        
  46.         en_orden(ptrRaiz->ptrHI);
  47.         printf("%d-", ptrRaiz->valor);
  48.         en_orden(ptrRaiz->ptrHD);        
  49.     }
  50. }
  51.  
  52. int main(int argc, char** argv) {
  53.     TNodo *ptrRaiz;
  54.     crear_arbol(&ptrRaiz);
  55.     inserta_nodo(&ptrRaiz, 4);
  56.     inserta_nodo(&ptrRaiz, 2);
  57.     inserta_nodo(&ptrRaiz, 1);
  58.     inserta_nodo(&ptrRaiz, 6);
  59.     inserta_nodo(&ptrRaiz, 5);
  60.     inserta_nodo(&ptrRaiz, 7);
  61.     en_orden(ptrRaiz);
  62.     return (EXIT_SUCCESS);
  63. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement