Определить функцию TREE-DEPTH - Lisp

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

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

Определить функцию TREE-DEPTH, которая возвращает максимальную глубину бинарного дерева. Например,
Листинг программы
  1. >(TREE-DEPTH ‘(A.B))
  2. 1
  3. >(TREE-DEPTH ‘((A.B).(C.D)))
  4. 2

Решение задачи: «Определить функцию TREE-DEPTH»

textual
Листинг программы
  1. (defun depth-tree (tree)
  2.   (cond ((atom tree) 0)
  3.         (t (max (+ 1 (depth-tree (car tree)))
  4.                 (+ 1 (depth-tree (cdr tree)))))))
  5.  
  6. ==> depth-tree
  7.  
  8. (depth-tree '(A.B))
  9.  
  10. ==> 1
  11.  
  12. (depth-tree '((A.B).(C.D)))
  13.  
  14. ==> 2

Объяснение кода листинга программы

В данном коде определена функция с именем depth-tree. Она принимает в качестве аргумента дерево, представленного в виде списка. Если дерево является атомом (лишь один элемент), то функция возвращает 0. В противном случае, функция рекурсивно вызывает саму себя для каждого элемента дерева (включая его самого), и возвращает максимальную глубину из всех этих вызовов. Глубина дерева определяется как 1 плюс максимальная глубина его поддерева. Поддерево — это часть дерева, представленная в виде списка, начиная с любого его элемента, кроме первого. Примеры использования функции depth-tree показывают, что она корректно определяет глубину вложенности списков. Код функции:

  1. (defun depth-tree (tree)
  2. `  (cond ((atom tree) 0)
  3. `   (t (max (+ 1 (depth-tree (car tree)))
  4.     (+ 1 (depth-tree (cdr tree))))))
  5. ==> depth-tree
  6. (depth-tree '(A.B))
  7. ==> 1
  8. (depth-tree '((A.B).(C.D))
  9. ==> 2

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


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

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

15   голосов , оценка 3.8 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы