2009-11-08 3 views
1

п-ичных дерево запоминается следующим образом:Количество уровней в дереве в LISP

(node (list-subtree-1) (list-subtree-2) ...) 

В качестве примера, дерево

A 
/\ 
B C 
/\ 
D E 

представлена ​​следующим образом: (А (в) (с (D), (Е)))

Возвращает количество уровней дерева

проблема заключается в том, что я Мне разрешено использовать только следующие функции: null, car, cdr, equal, atom, numberp, cons, cadr, caddr, cond и арифметические функции. Может ли кто-нибудь дать мне функцию, чтобы вернуть уровни такого дерева?

+0

Я также должен был вернуться на уровень определенного заданного узла, и я сделал это так: (DEFUN лвл (узел лк) (конд ((нуль л) 1) ((равный (автомобиль l) узел) k) (t (* (lvl node (cadr l) (+ k 1)) (lvl node (caddr l) (+ k 1)))) ) он работает, но я не могу изменить его, чтобы вернуть количество уровней дерева ...) –

+1

Это домашнее задание? – Flinkman

+0

часть проекта для университета –

ответ

1

Я просто дам несколько советов:

  • Количество уровней ниже, и в том число корневого узла, зависит от самого высокого числа уровней ниже, и в том числе любого прямого субом узла корневого узла.

  • Арктичность дерева кажется неизвестной/произвольной, поэтому вам нужно будет найти способ хранения глубины самого глубокого найденного поддерева, в то же время уменьшая количество проверяемых узлов.