Как я могу найти высоту дерева в схеме? - PullRequest
1 голос
/ 12 апреля 2019

Определить процедуру Scheme (tree-height t), которая вычисляет высоту непустого дерево т

(define (height tree)
  (if (null? tree)
      0
      (max (height (caddr tree)))))

'(5(1(8)(2(1)(9)))(10)(4(9)))

Должен вернуть 4

1 Ответ

2 голосов
/ 12 апреля 2019

Вы правы, вы забыли добавить 1 к ответу, но вы также забыли взять максимум cadr и caddr, вы только что нашли максимум caddr. У вас может быть дерево, левая ветвь которого больше, чем правая, но ваша программа выдаст высоту правой ветки и неверный ответ. Этот код должен решить вашу проблему.

(define (height tree)
  (if (null? tree)
        0
        (+ 1 (max (height (cadr tree)) 
                  (height (caddr tree))))))
...