Я не могу понять, как удалить элемент из BST. Это мой кодУдаление элемента из BST в схеме
(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)))))))
Минимум возвращает минимальное значение в дереве. Если я попытаюсь удалить элемент, который не является листом, он переходит в бесконечный цикл. Как я могу это исправить?
Похож на дубликат [на этот вопрос] (http://stackoverflow.com/questions/4374530/how-do-i-delete-from-a-binary-search-tree-in-lisp/4383580). –