Разработать функцию, которая подсчитывает высоту заданного бинарного дерева - Lisp
Формулировка задачи:
Разработать функцию, которая подсчитывает высоту заданного бинарного дерева.
2 примера с разным числом уровней.
Сделать в графическом и кодовом варианте
***
Не совсем понимаю, как это сделать
Еще и со схемой, поясняющей работу функции
Решение задачи: «Разработать функцию, которая подсчитывает высоту заданного бинарного дерева»
textual
Листинг программы
(defun tree-depth (tree) (cond ((null tree) 0) (t (+ 1 (max (tree-depth (car tree)) (tree-depth (caddr tree))))))) ==> TREE-DEPTH (tree-depth '((nil 10 nil) 111 ((nil 122 (nil 123 nil)) 222 (nil 333 nil)))) ==> 4
Объяснение кода листинга программы
В данном коде определена функция tree-depth, которая принимает в качестве аргумента ссылку на узел дерева. Если дерево пустое, то функция возвращает 0. В противном случае, функция рекурсивно вызывает саму себя для левого и правого поддеревьев, и возвращает максимальную глубину из этих двух поддеревьев плюс 1. Пример использования функции: (tree-depth '((nil 10 nil) 111 ((nil 122 (nil 123 nil)) 222 (nil 333 nil)))) Результат выполнения: 4
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д