ejercicio programación en C

Iniciado por frick666, 22 Noviembre 2017, 21:36 PM

0 Miembros y 1 Visitante están viendo este tema.

frick666

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

engel lex

no se hacen tareas, se resuelven dudas... muestra que llevas y explica tus dudas
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

frick666

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);
}

}

Serapis

Cita de: frick666 en 23 Noviembre 2017, 04:58 AM
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...