0
Я пытаюсь вставить элемент в двоичное дерево поиска, но я получаю сообщение об ошибке, и я не могу понять, почему. Если я пытаюсь запустить:Ошибка нарушения правил при вставке в двоичное дерево поиска
(insert 11 '(5 '() '()))
Ошибка:
. . >: contract violation
expected: real?
given: quote
argument position: 2nd
other arguments...:
11
Главный код:
(define (node tree)
(car tree))
(define (right-branch tree)
(caddr tree))
(define (left-branch tree)
(cadr tree))
(define (make-tree node left-branch right-branch)
(list node left-branch right-branch))
(define (insert e tree)
(cond((null? tree) (make-tree e '() '()))
((> e (node tree))(make-tree (node tree) (left-branch tree) (insert e (right-branch tree))))
((< e (node tree))(make-tree (node tree) (insert e (left-branch tree)) (right-branch tree)))))
ошибка конкретно указывает (> е (узел дерева)), так как проблематичный кусок кода. Кто-нибудь знает, что здесь происходит?
Я не знаю, как мне удалось пропустить это. Благодаря! – karoma
Это привычка цитирования пустого списка ... приветствую ;-) – uselpa