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

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

17.4.<br />

Árboles binarios 381<br />

Encontrar:= Encontrar (dato, hIzdo)<br />

else if datos > cont<strong>en</strong>ido th<strong>en</strong><br />

Encontrar:= Encontrar (dato, hDcho)<br />

else Encontrar:= arbol<br />

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

Inserción de un nuevo nodo<br />

El sigui<strong>en</strong>te procedimi<strong>en</strong>to inserta un nuevo nodo <strong>en</strong> un árbol binario de<br />

búsqueda árbol; la inserción del nodo es tarea fácil, todo consiste <strong>en</strong> <strong>en</strong>contrar<br />

el lugar adecuado donde insertar el nuevo nodo, esto se hace <strong>en</strong> función de su<br />

valor de manera similar a lo visto <strong>en</strong> el ejemplo anterior. El seudocódigo para<br />

este procedimi<strong>en</strong>to es:<br />

si arbol es vacío <strong>en</strong>tonces<br />

crear nuevo nodo<br />

<strong>en</strong> otro caso si arbol^.cont<strong>en</strong>ido > datoNuevo <strong>en</strong>tonces<br />

Insertar ord<strong>en</strong>adam<strong>en</strong>te <strong>en</strong> el hijo izquierdo de arbol<br />

<strong>en</strong> otro caso si arbol^.cont<strong>en</strong>ido < datoNuevo <strong>en</strong>tonces<br />

Insertar ord<strong>en</strong>adam<strong>en</strong>te <strong>en</strong> el hijo derecho de arbol<br />

Y la implem<strong>en</strong>tación <strong>en</strong> <strong>Pascal</strong> es:<br />

procedure Insertar(datoNuevo: tElem; var arbol: tArbol);<br />

{Efecto: se a~nade ord<strong>en</strong>adam<strong>en</strong>te a arbol un nodo de cont<strong>en</strong>ido<br />

datoNuevo}<br />

begin<br />

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

New(arbol);<br />

with arbol^ do begin<br />

hIzdo:= nil;<br />

hDcho:= nil;<br />

cont<strong>en</strong>ido:= datoNuevo<br />

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

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

else with arbol^ do<br />

if datoNuevo < cont<strong>en</strong>ido th<strong>en</strong><br />

Insertar(datoNuevo,hIzdo)<br />

else if datoNuevo > cont<strong>en</strong>ido th<strong>en</strong><br />

Insertar(datoNuevo,hDcho)<br />

else {No se hace nada: <strong>en</strong>trada duplicada}<br />

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

La forma resultante de un árbol binario de búsqueda dep<strong>en</strong>de bastante del<br />

ord<strong>en</strong> <strong>en</strong> el que se vayan insertando los datos: si éstos ya están ord<strong>en</strong>ados el<br />

árbol deg<strong>en</strong>era <strong>en</strong> una lista (véase la figura 17.11).

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

Saved successfully!

Ooh no, something went wrong!