• Sábado 14 de Diciembre de 2024, 09:31

Autor Tema:  Re: Recorrer los nodos de un árbol binario, en orden  (Leído 12633 veces)

phoenix

  • Nuevo Miembro
  • *
  • Mensajes: 5
    • Ver Perfil
Re: Recorrer los nodos de un árbol binario, en orden
« en: Martes 7 de Mayo de 2002, 05:15 »
0
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.;)

olla

  • Nuevo Miembro
  • *
  • Mensajes: 11
    • Ver Perfil
Re: Recorrer los nodos de un árbol binario, en orden
« Respuesta #1 en: Martes 7 de Mayo de 2002, 12:42 »
0
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...
Eres tu John Wayne o lo soy yo?

phoenix

  • Nuevo Miembro
  • *
  • Mensajes: 5
    • Ver Perfil
Re: Recorrer los nodos de un árbol binario, en orden
« Respuesta #2 en: Miércoles 8 de Mayo de 2002, 03:35 »
0
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

olla

  • Nuevo Miembro
  • *
  • Mensajes: 11
    • Ver Perfil
Re: Recorrer los nodos de un árbol binario, en orden
« Respuesta #3 en: Miércoles 8 de Mayo de 2002, 13:24 »
0
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
}
Eres tu John Wayne o lo soy yo?

phoenix

  • Nuevo Miembro
  • *
  • Mensajes: 5
    • Ver Perfil
Recorrer los nodos de un árbol binario, en orden
« Respuesta #4 en: Jueves 9 de Mayo de 2002, 00:22 »
0
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.