Ich kann nicht herausfinden, wie ein Element aus dem BST zu löschen. Das ist mein CodeLöschen eines Elements aus einem BST in Schema
(define remove (lambda (x t)
(if (< x (car t)) (list (car t) (remove x (cadr t)) (caddr t))
(if (> x (car t)) (list (car t) (cadr t) (remove x (caddr t)))
(if (not(and (null? (cadr t)) (null? (caddr t))))
(let ((r (minimum (caddr t)))) ((remove r t) (set-car! t r)))
(list '() (cadr t) (caddr t)))))))
Minimum gibt den Mindestwert im Baum zurück. Wenn ich versuche, ein Element zu löschen, das kein Blatt ist, geht es in eine Endlosschleife. Wie kann ich es reparieren?
Sieht aus wie ein Duplikat von [diese Frage] (http://stackoverflow.com/questions/4374530/how-do-i-delete-from-a-binary-search-tree-in-lisp/4383580). –