Vous êtes sur la page 1sur 2

^

ALGORITMO

BORRAR UN ELEMENTO

Para borrar un elemento tambin nos basamos en el algoritmo de bsqueda. Si el


elemento no est en el rbol no lo podremos borrar. Si est, hay dos casos posibles:
1. Se trata de un nodo hoja: en ese caso lo borraremos directamente.
2. Se trata de un nodo rama: en ese caso no podemos eliminarlo, puesto
que perderamos todos los elementos del rbol de que el nodo actual es
padre. En su lugar buscamos el nodo ms a la izquierda del subrbol
derecho, o el ms a la derecha del subrbol izquierdo e intercambiamos
sus valores. A continuacin eliminamos el nodo hoja.
Necesitamos un puntero auxiliar para conservar una referencia al padre del nodo
raz actual. El valor inicial para ese puntero es NULL.
Padre = NULL
Si el rbol est vaco: el elemento no est en el rbol, por lo tanto salimos
sin eliminar ningn elemento.
(1) Si el valor del nodo raz es igual que el del elemento que buscamos,
estamos ante uno de los siguientes casos:
o El nodo raz es un nodo hoja:
Si 'Padre' es NULL, el nodo raz es el nico del
rbol, por lo tanto el puntero al rbol debe ser
NULL.
Si raz es la rama derecha de 'Padre', hacemos
que esa rama apunte a NULL.
Si raz es la rama izquierda de 'Padre', hacemos
que esa rama apunte a NULL.
Eliminamos el nodo, y salimos.
o El nodo no es un nodo hoja:
Buscamos el 'nodo' ms a la izquierda del rbol
derecho de raz o el ms a la derecha del rbol
izquierdo. Hay que tener en cuenta que puede
que slo exista uno de esos rboles. Al mismo
tiempo, actualizamos 'Padre' para que apunte al
padre de 'nodo'.
Intercambiamos los elementos de los nodos raz
y 'nodo'.

IRERI ORTIZ MORALES 1


Borramos el nodo 'nodo'. Esto significa volver
a (1), ya que puede suceder que 'nodo' no sea un
nodo hoja.
Si el valor del nodo raz es mayor que el elemento que buscamos,
continuaremos la bsqueda en el rbol izquierdo.
Si el valor del nodo raz es menor que el elemento que buscamos,
continuaremos la bsqueda en el rbol derecho.

IRERI ORTIZ MORALES 2

Vous aimerez peut-être aussi