You are on page 1of 14

UNIVERSIDAD POLITCNICA DE CUENCAM

NOMBRE: Jhonatan Antonio Vazquez Vaquera

MATERIA: Algoritmos

NOMBRE DEL PROFESOR:


Lic. Ma. Del Rosario Garcia Medrano

NOMBRE Y NUMERO DE UNIDAD:

TTULO DE TRABAJO :

Soluciones de Problemas Usando


Estructuras Algoritmicas

Resumen De Recorrido

LUGAR Y FECHA: Cuencame Durango, 6 Noviembre del 2014


BIBLIOGRAFA: http://es.wikipedia.org/wiki/Recorrido_de_%C3%A1rboles
Trabajos Vistos en Clases
http://es.slideshare.net/charias98/recorridos-de-arboles

Introduccin
A diferencia de las listas enlazadas los rboles no tienen un primer, segundo,
tercer valor, etc. Se dice que el primer nodo de un rbol es la raz pero cul es el
siguiente. Cuando se dice que se recorre un rbol se debe imprimir el valor o
valores de un nodo una y solo una vez.

Recorrido
Comparado

las

estructuras

de

datos

lineales

como

las listas

enlazadas y arreglos unidimensionales, que tienen un mtodo cannico de


recorrido, las estructuras arborescentes pueden ser recorridas de muchas
maneras diferentes. Comenzando en la raz de un rbol binario, hay tres pasos
principales que pueden ser realizados y el orden en la cual son realizados define
el tipo de recorrido. Estos pasos (en ningn orden particular) son: ejecucin de

una accin en el nodo actual (referido como visitando el nodo), recorriendo al


nodo hijo de la izquierda, y recorriendo al nodo hijo de la derecha. As el proceso
ms fcilmente descrito a travs de la recursin.
Los nombres dados para un estilo particular de recorrido vienen de la posicin del
elemento de raz con respecto a los nodos izquierdo y derecho. Imagine que los
nodos izquierdo y derecho son constantes en espacio, entonces el nodo raz
pudiera colocarse a la izquierda del nodo izquierdo (pre-orden), entre el nodo
izquierdo y derecho (in-orden), o a la derecha del nodo derecho (post-orden).
Con el fin de ilustrar, se asume que los nodos izquierdos tienen siempre prioridad
sobre los nodos derechos. Este ordenamiento puede ser invertido mientras el
mismo orden sea asumido para todos los mtodos de recorrido.

Recorrido en profundidad-primero
rbol binario
Pre orden: (raz, izquierdo, derecho). Para recorrer un rbol binario no vaco en
pre orden, hay que realizar las siguientes operaciones recursivamente en cada
nodo, comenzando con el nodo de raz:

Visite la raz
Atraviese el sub-rbol izquierdo
Atraviese el sub-rbol derecho
Inorden: (izquierdo, raz, derecho). Para recorrer un rbol binario no vaco en
inorden (simtrico), hay que realizar las siguientes operaciones recursivamente en
cada nodo:
Atraviese el sub-rbol izquierdo
Visite la raz
Atraviese el sub-rbol derecho
Postorden: (izquierdo, derecho, raz). Para recorrer un rbol binario no vaco en
postorden, hay que realizar las siguientes operaciones recursivamente en cada
nodo:
Atraviese el sub-rbol izquierdo
Atraviese el sub-rbol derecho
Visite la raz
En general, la diferencia entre pre orden, inorden y postorden es cundo se
recorre la raz. En los tres, se recorre primero el sub-rbol izquierdo y luego el
derecho.
En pre orden, 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

Pre orden (antes), inorden (en medio), postorden (despus).


rbol genrico
Para recorrer un rbol no vaco en orden de profundidad-primero, hay que realizar
las siguientes operaciones recursivamente en cada nodo:
Realice la operacin pre-orden
Para i=1 a n-1 haga
Visite al hijo[i], si existe
Realice la operacin in-orden
Visite al hijo[n], si existe
Realice la operacin post-orden
Donde n es el nmero de nodos hijos. Dependiendo del problema actual, las
operaciones de pre-orden, in-orden o post-orden pueden ser vacas (vid), o usted
puede querer visitar solamente un nodo de hijo especfico, as que estas
operaciones pueden ser consideradas opcionales. Tambin, en la prctica, ms de
una de las operaciones de pre-orden, in-orden y post-orden pueden ser
requeridas. Por ejemplo, al insertar en un rbol ternario, una operacin de preorden es realizada comparando elementos. Una operacin de post-orden puede
luego ser necesitada para re balancear el rbol.

Recorrido en anchura-primero
Los rboles tambin pueden ser recorridos en orden por nivel (de nivel en nivel),
donde visitamos cada nodo en un nivel antes de ir a un nivel inferior. Esto tambin
es llamado recorrido en anchura-primero o recorrido en anchura.
Ejemplo

rbol binario de bsqueda:

A sorted binary tree


Profundidad-primero
Secuencia de recorrido de pre orden: F, B, A, D, C, E, G, I, H (raz, izquierda,
derecha)

Secuencia de recorrido de inorden: A, B, C, D, E, F, G, H, I (izquierda, raz,


derecha); note cmo esto produce una secuencia ordenada
Secuencia de recorrido de postorden: A, C, E, D, B, H, I, G, F (izquierda, derecha,
raz)

Secuencia de recorrido de orden por nivel: F, B, G, A, D, I, C, E, H


pre-orden

in-orden

post-orden

orden por nivel

push F

queue F
push F B A

pop F

push F B A

dequeue F

pop A

queue B G

push D C

dequeue B

pop C

queue A D

push E

dequeue G

pop E

queue I

pop D

dequeue A

pop B

dequeue D

push G I H

queue C E

pop H

dequeue I

pop I

queue H

pop G

dequeue C

pop F

dequeue E

pop A
push G B
pop B
pop B
push D C
push D A
pop C
pop A
pop D
pop D
push E
push E C
pop E
pop C
pop F
pop E
push G
pop G
pop G
push I
push I H
pop I
pop H
push H
pop I
pop H

dequeue H

Implementaciones de ejemplo pre orden (nodo) si nodo == nulo entonces retorna


imprime nodo. Valor pre orden (nodo. Izquierda) pre orden (nodo. Derecha)
inorden (nodo) si nodo == nulo entonces retorna inorden (nodo. Izquierda) imprime
nodo. Valor inorden (nodo. Derecha) postorden (nodo) si nodo == nulo entonces
retorna postorden (nodo. Izquierda) postorden (nodo. Derecha) imprime nodo.

Valor

Todas las implementaciones de ejemplo requerirn el espacio de la pila de


llamadas proporcional a la altura del rbol. En un rbol mal balanceado, esto
puede ser muy considerable.
Podemos remover el requisito de la pila manteniendo punteros al padre en cada
nodo, o hilvanando el rbol. En el caso de usar los hilos, esto permitir un
recorrido inorden grandemente mejorado, aunque recuperar el nodo padre
requerido para el recorrido pre orden postorden ser ms lento que un simple
algoritmo basado en una pila.
Para recorrer un rbol hilvanado inorden, de puede hacer algo similar a lo
siguiente:
Inorden (nodo)
Mientras tiene Hijo Izquierdo (nodo) hacer
Nodo = nodo. Izquierda
Hacer
Visita (nodo)
Si (tiene Hijo Derecho (nodo)) entonces
Nodo = nodo. Derecha
Mientras tieneHijoIzquierdo (nodo) hacer
Nodo = nodo. Izquierda

De-lo-contrario
Mientras nodo. Padre null y nodo == nodo padre derecha hacer
Nodo = nodo. Padre
Nodo = nodo. Padre

Mientras nodo null


Observe que un rbol binario hilvanado proporcionar medios de determinar si un
puntero es un hijo, o un hilo. Ver rbol binario hilvanado para ms informacin.
Para recorrer un rbol inorden sin recursin
Void InOrderTraversal (struct nodo *n)
{
Struct nodo *Cur, *Pre;

If (n==NULL)
Return;
Cur = n;
While (Cur!= NULL)
{
If (Cur->lptr == NULL)
{
Printf ("\t%d",Cur->val);
Cur= Cur->rptr;
}
Else
{
Pre = Cur->lptr;
While (Pre->rptr !=NULL && Pre->rptr != Cur)

Pre = Pre->rptr;

If (Pre->rptr == NULL)
{
Pre->rptr = Cur;
Cur = Cur->lptr;
}
Else
{
Pre->rptr = NULL;
Printf ("\t%d",Cur->val);
Cur = Cur->rptr;
}
}
}
}

Recorrido en orden por nivel basado en cola


Tambin, listado abajo est el pseudocdigo para un simple recorrido en orden por
nivel basado en cola, y requerir un espacio proporcional al nmero mximo de
nodos en una profundidad dada. ste puede ser tanto como el nmero total de los
nodos/2. Un acercamiento ms eficiente en espacio para este tipo de recorrido

puede ser implementado usando una bsqueda de profundidad-primero de


profundizacin iterativa.
Orden por nivel (raz)
Cola = nueva cola
Cola. Encola (raz)
Mientras not cola. Vaca hacer
Nodo:= cola. Desencola ()
Visita (nodo)
Si nodo. Izquierdo null entonces
Cola. Encola (nodo. Izquierdo)
Si nodo. Derecho null entonces
Cola. Encola (nodo. Derecha)

Usos
Recorrido inorden
Es particularmente comn usar un recorrido inorden en un rbol binario de
bsqueda porque ste retornar valores en el orden del conjunto subyacente, de

acuerdo al comparador que configura el rbol de bsqueda binaria (de aqu el


nombre).
Para ver porqu ste es el caso, note que si n es un nodo en un rbol binario de
bsqueda, entonces todo n en el subrbol izquierdo es menor que n, y todo n en el
subrbol derecho es mayor o igual a n. Por lo tanto, si visitamos el subrbol
izquierdo en orden, usando una llamada recursiva, y entonces visitamos a n, y
despus visitamos el subrbol derecho en orden, nosotros hemos visitado
completamente el subrbol con raz en n en orden. Podemos asumir que las
llamadas recurrentes visitan correctamente los subrboles en orden usando el
principio matemtico de induccin estructural. Similarmente, el recorrer en inorden
reverso da los valores por orden decreciente.

Recorrido pre orden


Recorriendo un rbol en pre orden mientras se est insertando los valores en un
nuevo rbol es una manera comn de hacer una copia completa de un rbol
binario de bsqueda.
Tambin se pueden usar los recorridos pre orden para conseguir una expresin
prefijo (notacin polaca) de rboles de expresin: recorra el rbol de expresin en
pre orden. Para calcular el valor de tal expresin: explore de derecha a izquierda,
poniendo los elementos en un stack. Cada vez que se encuentre un operador, se
sustituyen los dos smbolos superiores del stack por el resultado de aplicar al
operador a esos elementos. Por ejemplo, la expresin * + 2 3 4, que en la notacin
de infijo es (2 + 3) 4, sera evaluada de esta manera:

Usando recorrido prefijo para evaluar un rbol de expresin

Expresin (restante)

Stack

+234

<vaco>

+23

+2

34

234

54

Respuesta

20

Conclusin
En este resumen se estudi una estructura y algunas variantes ms complejas, la
estructura en rbol son fundamentales dentro de la informtica aplicndose en una
extensa variedad de problemas.

You might also like