Advertisement
eduardovp97

ex15.c

Nov 14th, 2016
83
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.61 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include "tree.h"
  4.  
  5. #define N 20
  6.  
  7. void paths(TNode *node, int n);
  8. void subPath(TNode *node, int suma, int n,int array[], int elem);
  9. void printArray(int array[], int n);
  10. int isValid(int suma, int x, int n);
  11. void append(int array[], int n, int x , int newArray[]);
  12.  
  13. int main(){
  14.  
  15.     TTree arbol;
  16.     crearArbol(&arbol);
  17.     insertar(&arbol,15);
  18.     insertar(&arbol,6);
  19.     insertar(&arbol,3);
  20.     insertar(&arbol,1);
  21.     insertar(&arbol,4);
  22.     insertar(&arbol,9);
  23.     insertar(&arbol,7);
  24.     insertar(&arbol,12);
  25.     insertar(&arbol,20);
  26.     insertar(&arbol,18);
  27.     insertar(&arbol,24);
  28.     insertar(&arbol,17);
  29.  
  30.     paths(arbol.root,10);
  31.  
  32.     return 0;
  33. }
  34.  
  35. void paths(TNode *node, int n){
  36.     if(node == NULL)
  37.         return;
  38.     int array[N];
  39.     subPath(node,0,n,array,0);
  40.     paths(node->izq,n);
  41.     paths(node->der,n);
  42. }
  43.  
  44. void subPath(TNode *node, int suma, int n,int array[], int elem){
  45.     if(node == NULL)
  46.         return;
  47.     int newArray[N];
  48.     if(isValid(suma,node->info,n)){
  49.         append(array,elem,node->info,newArray);
  50.         //printArray(newArray,elem+1);
  51.         if((suma+node->info) == n){
  52.             printArray(newArray,elem+1);
  53.             return;        
  54.         }
  55.         subPath(node->izq,suma+node->info,n,newArray,elem+1);
  56.         subPath(node->der,suma+node->info,n,newArray,elem+1);
  57.     }
  58. }
  59.  
  60. void append(int array[], int n, int x , int newArray[]){
  61.     int i;
  62.     for(i=0; i<n; i++)
  63.         newArray[i] = array[i];
  64.     newArray[n] = x;
  65. }
  66.  
  67. int isValid(int suma, int x, int n){
  68.     if(suma+x <=n)
  69.         return 1;
  70.     return 0;
  71. }
  72.  
  73. void printArray(int array[], int n){
  74.     int i;
  75.     for(i=0; i<n; i++)
  76.         printf("%d ",array[i]);
  77.     printf("\n");
  78. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement