Professional Documents
Culture Documents
http://view.knowledgevision.com/presentation/a2e70eb244e44fc0ae4dc4cdbb9
804b9
El recorrido de rboles refiere al proceso de visitar de una manera sistemtica, exactamente una vez, cada
nodo en una estructura de datos de rbol (examinando y/o actualizando los datos en los nodos).
Preorden: (raz, izquierdo, derecho). Para recorrer un rbol binario no vaco en preorden, hay que realizar las
siguientes operaciones recursivamente en cada nodo, comenzando con el nodo de raz:
1.
Visite la raz
2.
3.
Inorden: (izquierdo, raz, derecho). Para recorrer un rbol binario no vaco en inorden (simtrico), hay que
realizar las siguientes operaciones recursivamente en cada nodo:
1.
2.
Visite la raz
3.
Postorden: (izquierdo, derecho, raz). Para recorrer un rbol binario no vaco en postorden, hay que realizar
las siguientes operaciones recursivamente en cada nodo:
1.
2.
3.
Visite la raz
En general, la diferencia entre preorden, inorden y postorden es cundo se recorre la raz. En los tres, se
recorre primero el sub-rbol izquierdo y luego el derecho.
En preorden, la raz se recorre antes que los recorridos de los subrboles izquierdo y derecho
En inorden, la raz se recorre entre los recorridos de los rboles izquierdo y derecho, y
En postorden, la raz se recorre despus de los recorridos por el subrbol izquierdo y el derecho
Algoritmos en Pseudocodigo:
{INFO, IZQ y DER son campos del registro NODO. INFO es una o ms
variables de informacin del nodo, IZQ y DER son variables de tipo puntero}
Si NODO NULO entonces,
Visitar el NODO /* {Escribir la informacin NODO^.INFO} */
Regresa a PREORDEN con PREORDEN(NODO^.IZQ) /*{Llamada recursiva con la
rama izquierda}*/ Regresa a PREORDEN con PREORDEN(NODO^.DER) /*
{Llamada recursiva con la rama derecha} */
Fin-si
Fin-algoritmo
{INFO, IZQ y DER son campos del registro NODO. INFO es una o ms
variables de informacin del nodo, IZQ y DER son variables de tipo puntero}
Si NODONULO entonces,
INORDEN(NODO^.IZQ) {Llamada recursiva con la rama izquierda}
Visitar el NODO {Escribir la informacin NODO^.INFO}
INORDEN(NODO^.DER) {Llamada recursiva con la rama derecha}
Fin-si
Fin-algoritmo
{INFO, IZQ y DER son campos del registro NODO. INFO es una o ms variables
de informacin del nodo, IZQ y DER son variables de tipo puntero}
Si NODO NULO entonces ,
POSTORDEN(NODO^.IZQ) {Llamada recursiva con la rama izquierda}
POSTORDEN(NODO^.DER) {Llamada recursiva con la rama derecha}
/* estructura autoreferenciada */
struct nodoArbol {
struct nodoArbol *ptrIzq;
int dato;
struct nodoArbol *prtDer;
};
/* prototipos */
void insertaNodo(ptrNodoArbol *ptrArbol, int valor);
void inOrden(ptrNodoArbol ptrArbol);
srand(time(NULL));
printf("Los nmeros colocados en el arbol son:\n");
inOrden(ptrRaiz);
return 0;
}
printf("%3d", ptrArbol->dato);
preOrden(ptrArbol->ptrIzq);
preOrden(ptrArbol->prtDer);
}
}