Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: frick666 en 22 Noviembre 2017, 21:36 pm



Título: ejercicio programación en C
Publicado por: frick666 en 22 Noviembre 2017, 21:36 pm
buenas, no se si alguien me propria ayudar con este ejercicio de arboles binarios
Sea un árbol binario de números enteros positivos donde el valor cero indica que dicho nodo no tiene el hijo que se está leyendo. Escribir un programa en C que lea una cadena de caracteres y devuelva la profundidad máxima del árbol y sus hojas. En la salida el primer dato que se devuelve es la profundidad máxima del árbol.
Ejemplo
Entradas:1,2,4,8,0,0,0,5,0,0,3,6,0,0,7,0,0
Salida: 4,8,5,6,7


Título: Re: ejercicio programación en C
Publicado por: engel lex en 23 Noviembre 2017, 01:24 am
no se hacen tareas, se resuelven dudas... muestra que llevas y explica tus dudas


Título: Re: ejercicio programación en C
Publicado por: frick666 en 23 Noviembre 2017, 04:58 am
llevo solo esto
#include <stdio.h>
#include <stdlib.h>
#include <time.h>

struct nodoArbol {
 struct nodoArbol *ptrIzq;
 int dato;
 struct nodoArbol *prtDer;
};

typedef struct nodoArbol NodoArbol;
typedef NodoArbol *ptrNodoArbol;

void insertaNodo(ptrNodoArbol *ptrArbol, int valor);
void inOrden(ptrNodoArbol ptrArbol);
void preOrden(ptrNodoArbol ptrArbol);
void postOrden(ptrNodoArbol ptrArbol);

int main()
{
 int i;
 int elemento;
 ptrNodoArbol ptrRaiz = NULL;

 printf("Los números colocados en el arbol son:\n");


 for (i = 1; i <= 17; i++) {
 scanf("%d", &elemento);
 insertaNodo(&ptrRaiz, elemento);
 }

 printf("nnEl recorrido inorden es:n");
 inOrden(ptrRaiz);

 return 0;
}
void insertaNodo( ptrNodoArbol *ptrArbol, int valor )
{

 if (*ptrArbol == NULL) {
 *ptrArbol = malloc(sizeof(NodoArbol));

 if (*ptrArbol != NULL) {
 (*ptrArbol)->dato = valor;
 (*ptrArbol)->ptrIzq = NULL;
 (*ptrArbol)->prtDer = NULL;
 } else {
 printf("no se inserto %d. No hay memoria disponible.n", valor);
 }
 } else {
 if (valor < (*ptrArbol)->dato) {
 insertaNodo(&((*ptrArbol)->ptrIzq), valor);
 } else if (valor > (*ptrArbol)->dato) {
 insertaNodo(&((*ptrArbol)->prtDer), valor);
 } else {
 printf("dup");
 }
 }
}

void inOrden(ptrNodoArbol ptrArbol)
{
 if (ptrArbol != NULL) {
 inOrden(ptrArbol->ptrIzq);
 printf("%3d", ptrArbol->dato);
 inOrden(ptrArbol->prtDer);
 }

}


Título: Re: ejercicio programación en C
Publicado por: Serapis en 23 Noviembre 2017, 17:35 pm
llevo solo esto
No está bien exponer el código y esperar que uno repase tu código de arriba a abajo, debes explicar qué dudas tienes, dónde te pierdes, que te sale mal, que error te marca, etc... solo entonces uno con dicha información puede tomarse la molestia de revisar la parte del código que pudiera verse afectado por tus dudas, señalarte los errores, sugerirte una solución, otro enfoque, etc, etc...