09.05.2013 Views

Algoritmos y Programación en Pascal

Algoritmos y Programación en Pascal

Algoritmos y Programación en Pascal

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

17.4.<br />

Árboles binarios 379<br />

Inord<strong>en</strong>: En este tipo de recorrido, primero se recorre el subárbol izquierdo,<br />

luego se lee el valor del nodo y, finalm<strong>en</strong>te, se recorre el subárbol derecho.<br />

El árbol de la figura 17.10 recorrido <strong>en</strong> inord<strong>en</strong> se leería así: DBEAFCHG.<br />

Postord<strong>en</strong>: En este caso, se visitan primero los subárboles izquierdo y derecho<br />

y después se lee el valor del nodo.<br />

El árbol de la figura 17.10 recorrido <strong>en</strong> postord<strong>en</strong> se leería así: DEBF-<br />

HGCA.<br />

Ahora, escribir un procedimi<strong>en</strong>to recursivo para recorrer el árbol (<strong>en</strong> cualquiera<br />

de los tres órd<strong>en</strong>es recién definidos) es tarea fácil, por ejemplo:<br />

procedure RecorrerEnPreord<strong>en</strong>(arbol: tArbol);<br />

begin<br />

if arbol nil th<strong>en</strong> begin<br />

Visitarnodo(arbol); {por ejemplo, Write(arbol^.cont<strong>en</strong>ido)}<br />

RecorrerEnPreord<strong>en</strong>(arbol^.hIzdo);<br />

RecorrerEnPreord<strong>en</strong>(arbol^.hDcho);<br />

<strong>en</strong>d {if}<br />

<strong>en</strong>d; {RecorrerEnPreord<strong>en</strong>}<br />

para utilizar otro ord<strong>en</strong> <strong>en</strong> el recorrido sólo hay que cambiar el ord<strong>en</strong> de las<br />

acciones Visitarnodo y las llamadas recursivas.<br />

17.4.2 Árboles de búsqueda<br />

Como un caso particular de árbol binario se <strong>en</strong>cu<strong>en</strong>tran los árboles binarios<br />

de búsqueda (o árboles de búsqueda binaria), que son aquellos árboles <strong>en</strong> los que<br />

el valor de cualquier nodo es mayor que el valor de su hijo izquierdo y m<strong>en</strong>or<br />

que el de su hijo derecho. Según la definición dada, no puede haber dos nodos<br />

con el mismo valor <strong>en</strong> este tipo de árbol.<br />

❡❡ <br />

Obsérvese que los nodos de un árbol binario de búsqueda se pued<strong>en</strong> <strong>en</strong>umerar<br />

<strong>en</strong> ord<strong>en</strong> creci<strong>en</strong>te sigui<strong>en</strong>do un recorrido <strong>en</strong> inord<strong>en</strong>.<br />

La utilidad de los árboles binarios de búsqueda reside <strong>en</strong> que si buscamos<br />

cierta compon<strong>en</strong>te, podemos decir <strong>en</strong> qué mitad del árbol se <strong>en</strong>cu<strong>en</strong>tra comparando<br />

solam<strong>en</strong>te con el nodo raíz. Nótese la similitud con el método de búsqueda<br />

binaria.

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!