Дан список с возможными подсписками. Задача - изменить порядок всех элементов списка, причем порядок в подсписках также должен быть изменён на обратный.
(defun reverse-tree (arg) (if (atom arg) arg (let ((acc ())) ; список-накопитель (dolist (head arg) (push (reverse-tree head) acc)) acc))) (reverse-tree '(a b (1 2) (3 4 5) c))) (C (5 4 3) (2 1) B A)
Сложность алгоритма - О(n), где n - общее число листьев (атомов) в дереве.