2013-11-09 3 views
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))))) 

ошибка конкретно указывает (> е (узел дерева)), так как проблематичный кусок кода. Кто-нибудь знает, что здесь происходит?

ответ

2

Вы в двойных кавычках, попробуйте

(insert 11 '(5()())) 
+0

Я не знаю, как мне удалось пропустить это. Благодаря! – karoma

+0

Это привычка цитирования пустого списка ... приветствую ;-) – uselpa

Смежные вопросы