Lenguaje de Programacion
Lenguaje de Programacion II por Ana Haro  
  Inicio
  Introduccion a la estructura de datos
  Arreglos unidimencionales
  Recursividad
  Estructuras basicas de la informacion
  Asignacion secuencial y ligada
  Listas circulares y de doble liga
  Ordenacion por intercambio
  Ordenacion por seleccion
  Ordenacion por insercion
  Ordenaciones mejoradas
  Busqueda binaria
  Arboles
  Recorido de arboles binarios
  Representacion binaria de arboles
  Bibliografía
  Videos
Recorido de arboles binarios
RECORRIDO DE ARBOLES BINARIOS
Recorrido en preorden
En este tipo de recorrido se realiza cierta acción (quizás simplemente imprimir por pantalla el valor de la clave de ese nodo) sobre el nodo actual y posteriormente se trata el subárbol izquierdo y cuando se haya concluido, el subárbol derecho.
void preorden(tArbol *a)
{
 if (a != NULL) {
    tratar(a);                        //Realiza una operación en nodo
    preorden(a->hIzquierdo);
    preorden(a->hDerecho);
 }
}
Recorrido en postorden
En este tipo de recorrido se realiza cierta acción sobre el nodo actual y posteriormente se trata el subárbol derecho y cuando se haya concluido, el subárbol izquierdo.
Otra forma en que toman otros autores el recorrido postorden es primero el subárbol izquierdo, después el nodo actual y por último el subárbol derecho.
void postorden(tArbol *a)
{
 if (a != NULL) {
    postorden(a->hIzquiedo);
    postorden(a->hDerecho);
    tratar(a);                        //Realiza una operación en nodo
 }
}
Recorridos en amplitud (o por niveles)
En este caso el recorrido se realiza en orden por los distintos niveles del árbol. Así, se comenzaría tratando el nivel 1, que sólo contiene el nodo raíz, seguidamente el nivel 2, el 3 y así sucesivamente.
void amplitud(tArbol *a)
{
 tCola cola;
 tArbol *aux;
 
 if (a != NULL) {
    crearCola(cola);
    encolar(cola, a);
    while (!colavacia(cola)) {
      desencolar(cola, aux);
      visitar(aux);                                                   //Realiza una operación en nodo
      if (aux->hIzquierdo != NULL) encolar(cola, aux->hIzquierdo );
      if (aux->hDerecho!= NULL) encolar(cola, aux->hDerecho);
    }
 }
}
Hoy habia 11 visitantes (12 clics a subpáginas) ¡Aqui en esta página!
Hora  
   
unidep.prog2@hotmail.com  
   
Este sitio web fue creado de forma gratuita con PaginaWebGratis.es. ¿Quieres también tu sitio web propio?
Registrarse gratis