Autor
|
Tema: Arboles Binarios en C(Construcción Re cursiva) (Leído 1,328 veces)
|
NericSain
Desconectado
Mensajes: 14
|
HOLA AMIGOS, HACE UNOS DIAS SUBI MI PROBLEMA DE ARBOLES BINARIOS, PERO CREO QUE NO PUDE EXPLICARME BIEN, ESPERABA QUE ESTA VEZ ALGUIEN EN ESTE BASTO MUNDO DEL INTERWEB, PUDIERA AYUDARME, PUES ESTE EJERCICIO YA ME TIRO TODA UNA SEMANA DE TRABAJO SIN PODER RESOLVERLO. ESTE ES UN ALGORITMO ESCRITO QUE EN TEORÍA DESCRIBE COMO SERA LA FUNCIÓN QUE HAGA LA CONSTRUCCIÓN(NO BÚSQUEDA, NI IMPRESIÓN...ETC), SINO CONSTRUCCIÓN DE UN ÁRBOL DE EXPRESIONES https://ibb.co/fFOsvy ESPERO ALGUIEN ME PUEDA AYUDAR PDT, YA ESCRIBI CODIGO, PERO SE ME DETIENE, EL PROGRAMA O SI MODIIFCO NO ME IMPRIME BIEN EL ARBOL
|
|
|
En línea
|
|
|
|
srWhiteSkull
|
Pero no pone en lo que muestras que debas usar recursividad para la creación del árbol, sólo te indica el proceso para crearlo y eso puedes hacerlo con una simple iteración (un bucle) y funciones para gestionar el árbol, en las que si podrías usar recursión.
Así por lo primero que leo, los dos primeros puntos, entiendo que cada vez que se crea un nodo, izquierdo o derecho, este se agrega a una pila, que podría ser perfectamente usando un vector(un objeto de c++), por medio de la función push. Luego este puntero, por lo que entendí, se usa para el campo de valor del nodo y se hace un pop una vez se extrae del vector o pila, pero sólo es extraído cuando en el recorrido de la cadena, la que contiene la operación "(9+8...)" encuentra un operador... operador aritmético me imagino, o sea un + * / o lo que sea...
En resumen, mejor usa un bucle y recorre la fórmula carácter a carácter y según el carácter pues sigues las reglas del ejercicio, como por ejemplo si es un paréntesis derecho o un espacio blanco no hacer nada.
Aunque el ejercicio no tenga ninguna funcionalidad o utilidad práctica, quien vaya a evaluarlo querrá ver un árbol que se ajuste a las reglas del ejercicio.
Y ya para acabar, si no consigues mostrar el árbol completamente es sencillamente porque no has entendido el ejemplo que te puse, que la verdad lo hice lo más sencillo posible para que pudieras entenderlo. La función recursiva simplemente es una de las muchas formas de recorrer un árbol pero con la ventaja de no pasar por el mismo nodo dos veces a costa de comer muchos recursos, pero también puedes usar un bucle e ir creando un mapa para evitar repetir la misma ramificación y saltarte los nodos ya visitados.
Eso si, no espere que te resolvamos el ejercicio con código, sólo te podemos orientar. Si en verdad te gusta la programación y esperas ser un gran programador seguro que lo consigues, y de seguro sentirás una gran satisfacción personal y te ayudará a solucionar en un futuro grandes desafíos algorítmicos. Así que ánimo, si te cuesta comprenderlo haz un dibujo, simula las operaciones con trazas en papel y crea los nodos (como si estuvieras depurando), intenta visualizarlo para que lo comprendas mejor, yo uso esta técnica en algoritmos muy enrevesados.
PD Acuérdate de amputar o podar los nodos cada vez que hagas uno nuevo (con NULL), de esa forma al recorrerlo sabrás donde acaba y además si no lo haces la aplicación puede romperse, porque cuando trabajas con memoria a bajo nivel como en C++ los punteros siempre están sucios y debes gestionarlos tú.
|
|
« Última modificación: 30 Mayo 2018, 13:22 pm por srWhiteSkull »
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Arboles binarios
Programación C/C++
|
josue_tux
|
3
|
10,011
|
9 Mayo 2010, 20:18 pm
por leogtz
|
|
|
Arboles binarios
Java
|
soser
|
0
|
1,912
|
27 Octubre 2010, 08:45 am
por soser
|
|
|
Arboles Binarios c++
Programación C/C++
|
maferavagar
|
3
|
2,511
|
8 Julio 2015, 11:20 am
por ivancea96
|
|
|
Arboles Binarios en C++
Programación C/C++
|
pedro0620
|
0
|
1,580
|
3 Octubre 2016, 05:10 am
por pedro0620
|
|
|
Arboles Binarios en C
Programación C/C++
|
NericSain
|
2
|
1,492
|
24 Mayo 2018, 01:28 am
por NericSain
|
|