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.

382 Capítulo 17. Estructuras de datos recursivas<br />

6<br />

4 10<br />

2 5 8 12<br />

11<br />

Datos: 6, 4, 2, 10, 5, 12, 8, 11<br />

Supresión de un nodo<br />

Figura 17.11.<br />

2<br />

4<br />

5<br />

6<br />

8<br />

10<br />

11<br />

12<br />

Datos: 2, 4, 5, 6, 8, 10, 11, 12<br />

Eliminar un nodo <strong>en</strong> un árbol de búsqueda binaria es la única operación que<br />

no es fácil de implem<strong>en</strong>tar: hay que considerar los distintos casos que se pued<strong>en</strong><br />

dar, según el nodo por eliminar sea<br />

1. Una hoja del árbol,<br />

2. Un nodo con un sólo hijo, o<br />

3. Un nodo con dos hijos.<br />

Los dos primeros casos no pres<strong>en</strong>tan mayor problema; sin embargo, el tercero<br />

requiere un análisis detallado para suprimir el nodo de modo que el árbol<br />

resultante siga si<strong>en</strong>do un árbol binario de búsqueda. En primer lugar hay que<br />

situarse <strong>en</strong> el nodo padre del nodo por eliminar; después procederemos por pasos,<br />

analizando qué se necesita hacer <strong>en</strong> cada caso:<br />

1. Si el nodo por eliminar es una hoja, <strong>en</strong>tonces basta con destruir su variable<br />

asociada (usando Dispose) y, posteriorm<strong>en</strong>te, asignar nil a ese puntero.<br />

2. Si el nodo por eliminar sólo ti<strong>en</strong>e un subárbol, se usa la misma idea que<br />

al eliminar un nodo interior de una lista: hay que “saltarlo” conectando<br />

directam<strong>en</strong>te el nodo anterior con el nodo posterior y desechando el nodo<br />

por eliminar.<br />

3. Por último, si el nodo por eliminar ti<strong>en</strong>e dos hijos no se puede aplicar<br />

la técnica anterior, simplem<strong>en</strong>te porque <strong>en</strong>tonces habría dos nodos que

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

Saved successfully!

Ooh no, something went wrong!