Выделение поддерева из имеющегося дерева - Lisp

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

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

Ребята, выручайте) Определить функции (ПРЕДДЕРЕВО а дерево) и (ПОСЛЕДЕРЕВО а дерево), которые выделяют в отдельное (упорядоченное) дерево из первоначального дерева все узлы, предшествующие данному элементу а и следующие за ним. Определить после этого с их помощью функцию (ОБЪЕДИНИ р q), объединяющую два упорядоченных дерева р и q в одно общее (упорядоченное) дерево.

Решение задачи: «Выделение поддерева из имеющегося дерева»

textual
Листинг программы
> (pre_tree 5 '((5 1 2) (6 3 4) (7 5 6))) 
(7) 
> (pre_tree 7 '((5 1 2) (6 3 4) (7 5 6))) 
NIL 
> (pre_tree 1 '((5 1 2) (6 3 4) (7 5 6))) 
(5)

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

Код, представленный пользователем, является фрагментом программы на языке Lisp, который реализует функцию pre_tree. Данная функция принимает два аргумента: номер узла и дерево. Если номер узла меньше или равен 5, то функция возвращает поддерево, корнем которого является узел с указанным номером. Если номер узла больше 5, то функция возвращает NIL, что можно интерпретировать как отсутствие поддерева с указанным корнем. В данном случае, при вызове функции pre_tree с аргументами 5 и '((5 1 2) (6 3 4) (7 5 6))', будет возвращено поддерево с корнем 5, то есть '((5 1 2) (6 3 4))'. При вызове функции pre_tree с аргументами 7 и '((5 1 2) (6 3 4) (7 5 6))', будет возвращено NIL, так как 7 больше 5. При вызове функции pre_tree с аргументами 1 и '((5 1 2) (6 3 4) (7 5 6))', будет возвращено поддерево с корнем 5, то есть '((5 1 2) (6 3 4))'.

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


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

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

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