Посетить каждый узел в следующем порядке - Lisp

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

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

Добрый день!помогите пожайлуста с примром на лиспи: Дано случайное дерево.Надо посетить каждый узел в следующим порядки: -посещаем прямого потомка 1; -посещаем прямого потомка 2; -.........................; -посещаем прямого потомка n; Другими словами слева на право,сверху вниз.

Решение задачи: «Посетить каждый узел в следующем порядке»

textual
Листинг программы
(defun travel-tree (tree)
   (cond ((null tree) nil)
         (t (cons (car tree) (apply 'append (mapcar #'travel-tree (cdr tree)))))))
 
 
==> TRAVEL-TREE
 
(travel-tree '(r (1 (a) (b) (c)) (2 (d) (e) (f)) (3 (g)  (h) (i))))
 
==> (R 1 A B C 2 D E F 3 G H I)

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

В коде определён функционал для обхода каждого узла дерева в определённом порядке, представленного в виде списка. Вот список описывающих пошагово действия, которые происходят в коде:

  1. В функции travel-tree определён условный оператор cond, который проверяет, является ли переданный аргумент tree равным nil.
  2. Если tree равно nil, то возвращается nil.
  3. Если tree не равно nil, то возвращается конкатенация двух значений: первого элемента tree и результата рекурсивного вызова функции travel-tree для остатка списка tree.
  4. В начале функции travel-tree передаётся дерево в виде списка: (r (1 (a) (b) (c)) (2 (d) (e) (f)) (3 (g) (h) (i)).
  5. После вызова функции travel-tree с аргументом tree, будет выполнен рекурсивный вызов для каждого элемента списка.
  6. Для каждого элемента списка будет выполнен следующий набор действий:
    1. Первый элемент списка будет добавлен в начало результата.
    2. Результат рекурсивного вызова функции travel-tree для оставшейся части списка будет присоединен к началу результата.
    3. Результатом работы функции travel-tree для исходного списка будет (R 1 A B C 2 D E F 3 G H I).

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


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

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

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