Подсчет количества листьев дерева, лежащих за пределами заданного диапазона - Lisp

Узнай цену своей работы

Формулировка задачи:

Пожалуйста помогите! Даны число N, число M и S-выражение, представляющее дерево вида «(Родитель Значение РебенокЛевый РебенокПравый)» с числами в качестве вершин. Определить функцию для подсчёта количества вершин, значения которых лежат вне диапазона между N и M не включительно. Например: если дано "2 7 (0 (5 (1 nil nil) (7 nil nil)) (4 nil (10 nil nil)))", ответом будет "3"

Решение задачи: «Подсчет количества листьев дерева, лежащих за пределами заданного диапазона»

textual
Листинг программы
(defun tree-count (m n tree)
  (cond ((null tree) 0)
        (t (let ((v (car tree))
                 (l (cadr tree))
                 (r (caddr tree)))
               (+ (tree-count m n l) (tree-count m n r) 
                  (if (or (< v m) (> v n)) 1 0))))))   
 
==> tree-count
 
(tree-count 2 7 '(0 (5 (1 nil nil) (7 nil nil)) (4 nil (10 nil nil))))
 
==> 3

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

5   голосов , оценка 4.2 из 5
Похожие ответы