Borrar nodo de un arbol Binario de Busqueda

Cuestiones y dudas acerca de lenguajes de programación diversos.

Moderador: Moderadores

Mathias
Junior
Mensajes: 9
Registrado: Lun Nov 08, 2010 2:06 am

Borrar nodo de un arbol Binario de Busqueda

Mensaje por Mathias » Mié May 09, 2012 7:37 pm

Buenas, hice procedimiento que dado un arbol binario de busqueda, en el cual pueden haber nodos repetidos que quedarian juntos porque es ordenado, quiero que borre el primero de los iguales que coincida con el que le indique a borrar, y otro procedimiento que borre el ultimo de los iguales que coincida con el que quiero borrar...

Tengo este procedimiento que borra, que a la misma vez llama a un procedimiento "maximo de la rama izq".
el procedimiento borrar, es llamado por, o uno que recorra el arbol en orden, osea

IF (arbol <> NIL) AND NOT parar THEN
recorrer(arbol.izq, parar)
IF cumple que sea igual THEN borrar(arbol^.info); parar := TRUE END;
IF NOT parar THEN
recorrer(arbol^.der, parar)
END
END

ahi cuando le mande a remover, se supone que recien va a entrar en el que corresponda al primer lugar de los iguales. Lo mismo para borrar el ultimo lugar de los iguales sería:

IF (arbol <> NIL) AND NOT parar THEN
recorrer(arbol.der, parar)
IF cumple que sea igual THEN borrar(arbol^.info); parar := TRUE END;
IF NOT parar THEN
recorrer(arbol^.izq, parar)
END
END

pero no parece funcionar bien. la logica esta bien por lo menos?