Eliminar nodos en un árbol
El proceso general es muy sencillo en este caso, pero con una importante limitación, sólo podemos borrar nodos hoja:
El proceso sería el siguiente:
- Buscar el nodo padre del que queremos eliminar.
- Buscar el puntero del nodo padre que apunta al nodo que queremos borrar.
- Liberar el nodo.
- padre->nodo[i] = NULL;.
Cuando el nodo a borrar no sea un nodo hoja, diremos que hacemos una "poda", y en ese caso eliminaremos el árbol cuya raíz es el nodo a borrar. Se trata de un procedimiento recursivo, aplicamos el recorrido PostOrden, y el proceso será borrar el nodo.
El procedimiento es similar al de borrado de un nodo:
- Buscar el nodo padre del que queremos eliminar.
- Buscar el puntero del nodo padre que apunta al nodo que queremos borrar.
- Podar el árbol cuyo padre es nodo.
- padre->nodo[i] = NULL;.
En el árbol del ejemplo, para podar la rama 'B', recorreremos el subárbol 'B' en postorden, eliminando cada nodo cuando se procese, de este modo no perdemos los punteros a las ramas apuntadas por cada nodo, ya que esas ramas se borrarán antes de eliminar el nodo.
De modo que el orden en que se borrarán los nodos será:
K E F y B
Alan Sanabria :P
No hay comentarios:
Publicar un comentario