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