Вы правы, вы забыли добавить 1 к ответу, но вы также забыли взять максимум cadr
и caddr
, вы только что нашли максимум caddr
. У вас может быть дерево, левая ветвь которого больше, чем правая, но ваша программа выдаст высоту правой ветки и неверный ответ. Этот код должен решить вашу проблему.
(define (height tree)
(if (null? tree)
0
(+ 1 (max (height (cadr tree))
(height (caddr tree))))))