Здравствуйте, помогите пожалуйста с программой, бьюсь с ней уже давно, но никак не получается. Вот задание: "Заданы два дерева с помощью цепных списков. Определить, является ли второе дерево поддеревом первого". Есть код, правда не совсем так работает.
(defun eqtree (tree subtree) ;;сравнение двух деревьев
((null tree)nil)
((null subtree)nil)
((listp(car subtree))(setq x (levelup tree '()))
(setq y (levelup subtree '()))(eqtree x y))
(cond((and(atom (car tree)) (atom (car subtree)))
((equal (car tree)(car subtree))(print true)
(eqtree (cdr tree)(cdr subtree))))
(eqtree (car tree)(cdr subtree))
)
((and(listp(car tree)) (listp(car subtree)))
(setq x (levelup tree '()))(setq y (levelup subtree '()))
(eqtree x y))
(eqtree (car tree)(cdr subtree))
)
(defun levelup (tree result) ;;функция перехода на уровень выше
(if (>(length tree) 0)
(if (listp (car tree))
(levelup (cdr tree)
(append (car tree) result))
(levelup (cdr tree) result)
)
result
)
)