Разработать функцию, которая находит минимальный элемент среди элементов заданного уровня бинарного дерева - Lisp

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

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

Разработать функцию, которая находит минимальный элемент среди элементов заданного уровня бинарного дерева. Номер уровня идёт в параметре.

Решение задачи: «Разработать функцию, которая находит минимальный элемент среди элементов заданного уровня бинарного дерева»

textual
Листинг программы
(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.

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


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

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

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