SoloCodigo
Programación General => C/C++ => Mensaje iniciado por: phoenix en Martes 7 de Mayo de 2002, 05:15
-
Hola usuarios: me podrían desarollar los fuentes sobre el recorrido de los nodos de un árbol binario, ordenadamente, utilizando algoritmos recursivos y ,otros, no recursivos.
Disculpen las molestías. Muchas gracias. Saludos.;)
-
Vamos a ver:
-RECURSIVAMENTE:
Hay tres métodos Inorden, Preorden y Postorden, según el orden de recorrido de los nodos.
Inorden:
Primero procesamos el Hijo Izquierdo luego la raiz y finalmente el Hijo Derecho.
void inorden(arbol a)
{
arbol de,iz;
datosarbol x;
if (!a.vacio())
{
iz=a.hijoizq();
de=a.hijoder();
x=a.raiz();
inorden(iz);
write(x)//proceso la raiz según el caso
inorden(de);
}
}
Preorden:
Primero procesamos la raiz, luego el Hijo Izquierdo y finalmente el Hijo Derecho.
void preorden(arbol a)
{
arbol de,iz;
datosarbol x;
if (!a.vacio())
{
iz=a.hijoizq();
de=a.hijoder();
x=a.raiz();
write(x)//proceso la raiz según el caso
inorden(iz);
inorden(de);
}
}
Postorden:
Primero procesamos el Hijo Izquierdo luego el Hijo Derecho y finalmente la raiz.
void postorden(arbol a)
{
arbol de,iz;
datosarbol x;
if (!a.vacio())
{
iz=a.hijoizq();
de=a.hijoder();
x=a.raiz();
inorden(iz);
inorden(de);
write(x)//proceso la raiz según el caso
}
}
NO RECURSIVO.
En cuanto al recorrido no recursivo se hace con la ayuda de una cola, se trata de un recorrido por niveles.
void recorrido(arbol a)
{
cola c;
arbol b;
c.crearcola();
c.inscola(a);//inserto el arbol en la cola
while (!c.colavacia())
{
c.frentecola(b);
iz=b.hijoizq();
de=b.hijoder();
x=b.raiz();
write(x);//proceso raiz según caso
c.inscola(iz);
c.inscola(de);
}
}
Espero que te haya servido de ayuda...
-
Olla: gracias por codificar el tema del recorrido de arbol binario en forma orden aplicando técnicas recursivas, pero no he podido funcionar para ejecutarle, estuve estudiando sobre este tema, y me siento complicado...me podrías desarrollar todos sobre este tema con técnicas recursiva, y no recursivas. te falta poner el main(), construir el arbol y mostrar el recorrido de dicho arbol...
disculpa las molestías, saludos
-
Hay tienes el principal, ten encuenta que debes de tener implementada la clase arbol para poder insertar nodos en un arbol:
Voy a suponer que tengo un arbol de números enteros:
void main()
{
arbol a;//me creo un árbol
a.insorden(3);//introduzco numeros en el árbol
a.insorden(5);
a.insorden(1);
a.insorden(8);
a.insorden(9);
//me recorro los nodos del arbol con los algoritmos de ayer.
inorden(a);
preorden(a);
postorden(a);
//ten encuenta que los tres se recorren el arbol pero en diferente orden.
a.borarbol();//borro todo el arbol
}
-
olla, perdoname no quise molestarte porque todavía tengo dudas, Ud. pusiste en el main() la variable o parametro 'arbol', no se pudo declarar al ejecutarse. me gustaría que Ud. haga un desarrollo completo para poder ejecutarse bien, bien y funciona bien, bien..
Espero que haya funcionado bien...
Muchas Gracias.
Saludos.