Разработать функцию, которая находит минимальный элемент среди элементов заданного уровня бинарного дерева - Lisp
Формулировка задачи:
Решение задачи: «Разработать функцию, которая находит минимальный элемент среди элементов заданного уровня бинарного дерева»
(defun task-1 (tree n) (cond ((= n 1) (cadr tree)) (t (let ((mlv (task-1 (car tree) (- n 1))) (mrg (task-1 (caddr tree) (- n 1)))) (cond ((null mlv) mrg) ((null mrg) mlv) (t (min mlv mrg))))))) (task-1 *t* 3) ==> -1 (task-1 *t* 2) ==> 8 (task-1 *t* 1) ==> 7
Объяснение кода листинга программы
В коде определена функция task-1. Она принимает два аргумента: tree и n. Первый аргумент — это корневой элемент бинарного дерева, второй — это число, которое определяет глубину дерева, на которой нужно найти минимальный элемент. В функции используется конструкция cond, которая позволяет проверить различные условия. В данном случае, если глубина равна 1, то возвращается значение cadr tree, то есть значение правого узла. Если условие не выполняется, то происходит рекурсивный вызов функции task-1 для левого и правого поддеревьев с аргументом (- n 1), который уменьшает глубину на 1. Также создается новая переменная mlv, которая будет содержать минимальный элемент левого поддерева. Далее происходит рекурсивный вызов функции task-1 для правого поддерева с аргументом (- n 1). Если левое поддерево пустое, то возвращается значение mrg, иначе возвращается значение mlv. В конце функции происходит проверка на ноль для mlv и mrg. Если одно из значений равно нулю, то возвращается другое. Если оба значения не равны нулю, то возвращается минимальное из них. В примере использования функции task-1, сначала вызывается функция с аргументами t 3, что означает, что будет найден минимальный элемент на глубине 3. Возвращается значение -1. Затем вызывается функция с аргументами t 2, что означает, что будет найден минимальный элемент на глубине 2. Возвращается значение 8. Наконец, вызывается функция с аргументами t 1, что означает, что будет найден минимальный элемент на глубине 1. Возвращается значение 7.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д