Wednesday, November 12, 2014

Cuarto Parcialito (2º Cuatrimestre 2014)

Programar una funcion que reciba como parametros un arbol y un nivel, en int. El programa debe devolver un entero que contenga la suma de los valores del arbol en ese nivel. Programar esta funcion en un arbol de prueva ingresando: 7,4,12,1,6,15.
suma para el nivel 0: 7
suma para el nivel 1: 16
suma para el nivel 2: 22

RESUELTO:

#include <stdio.h>
#include <stdlib.h>

struct s_nodo
{
    int valor;
    struct s_nodo *izq;
    struct s_nodo * der;
};

int sumar_nivel (struct s_nodo * pArbol, int n);

int main()
{
    struct s_nodo * pArbol=NULL;
    int i;
    cargar_valor(&pArbol,7);
    cargar_valor(&pArbol,4);
    cargar_valor(&pArbol,12);
    cargar_valor(&pArbol,1);
    cargar_valor(&pArbol,6);
    cargar_valor(&pArbol,15);

    for(i=0;i<3;i++)
    printf("\nSUMA PARA EL NIVEL (%d) = %d", i,sumar_nivel(pArbol,i));
}
int sumar_nivel (struct s_nodo * pArbol, int n)
{
    if(pArbol!=NULL)
    {
            if(n==0)
            return pArbol->valor;
            else
            return sumar_nivel(pArbol->izq,n-1)+sumar_nivel(pArbol->der,n-1);
    }
    else
        return 0;

}
void cargar_valor (struct s_nodo ** ppArbol, int valor)
{
    if(*ppArbol!=NULL)
    {
        if((*ppArbol)->valor > valor)
            cargar_valor(&(*ppArbol)->izq,valor);
        else
            cargar_valor(&(*ppArbol)->der,valor);
    }
    else
    {
        *ppArbol=malloc(sizeof(struct s_nodo));
        (*ppArbol)->valor=valor;
        (*ppArbol)->izq=NULL;
        (*ppArbol)->der=NULL;
    }

}

No comments:

Post a Comment