Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- #include "tree.h"
- #define N 20
- void paths(TNode *node, int n);
- void subPath(TNode *node, int suma, int n,int array[], int elem);
- void printArray(int array[], int n);
- int isValid(int suma, int x, int n);
- void append(int array[], int n, int x , int newArray[]);
- int main(){
- TTree arbol;
- crearArbol(&arbol);
- insertar(&arbol,15);
- insertar(&arbol,6);
- insertar(&arbol,3);
- insertar(&arbol,1);
- insertar(&arbol,4);
- insertar(&arbol,9);
- insertar(&arbol,7);
- insertar(&arbol,12);
- insertar(&arbol,20);
- insertar(&arbol,18);
- insertar(&arbol,24);
- insertar(&arbol,17);
- paths(arbol.root,10);
- return 0;
- }
- void paths(TNode *node, int n){
- if(node == NULL)
- return;
- int array[N];
- subPath(node,0,n,array,0);
- paths(node->izq,n);
- paths(node->der,n);
- }
- void subPath(TNode *node, int suma, int n,int array[], int elem){
- if(node == NULL)
- return;
- int newArray[N];
- if(isValid(suma,node->info,n)){
- append(array,elem,node->info,newArray);
- //printArray(newArray,elem+1);
- if((suma+node->info) == n){
- printArray(newArray,elem+1);
- return;
- }
- subPath(node->izq,suma+node->info,n,newArray,elem+1);
- subPath(node->der,suma+node->info,n,newArray,elem+1);
- }
- }
- void append(int array[], int n, int x , int newArray[]){
- int i;
- for(i=0; i<n; i++)
- newArray[i] = array[i];
- newArray[n] = x;
- }
- int isValid(int suma, int x, int n){
- if(suma+x <=n)
- return 1;
- return 0;
- }
- void printArray(int array[], int n){
- int i;
- for(i=0; i<n; i++)
- printf("%d ",array[i]);
- printf("\n");
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement