lunes, 4 de febrero de 2013

Eliminar nodos en un árbol


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:
  1. Buscar el nodo padre del que queremos eliminar.
  2. Buscar el puntero del nodo padre que apunta al nodo que queremos borrar.
  3. Liberar el nodo.
  4. 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:
  1. Buscar el nodo padre del que queremos eliminar.
  2. Buscar el puntero del nodo padre que apunta al nodo que queremos borrar.
  3. Podar el árbol cuyo padre es nodo.
  4. 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