2009-11-08 69 views
1

的n元樹以下面的方式存儲一棵樹:數量的級別在LISP

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

作爲一個例子,該樹

A 
/\ 
B C 
/\ 
D E 

被表示爲如下: ( A(B)(C(d)(E)))

返回樹的級別的數目

的問題是,我我只允許使用以下函數:null,car,cdr,equal,atom,numberp,cons,cadr,caddr,cond和arithmtic函數。 任何人都可以給我一個函數來返回這種樹的水平?

+0

我也不得不返回某給定節點的水平,我做了這樣的: (defun定義拉特(節點LK) (條件((空L)1) ((等於(車l)節點)k) (t(*(lvl節點(cadr l)(+ k 1))(lvl節點(caddr l)(+ k 1)))) ) 它可以工作,但是我不能修改它返回樹的層數......) – 2009-11-08 20:21:15

+1

這功課是? – Flinkman 2009-11-09 09:04:39

+0

大學項目的一部分 – 2009-11-09 11:40:24

回答

1

我只是給一些提示:

  • 以下級別的數量和包括根節點取決於以下級別的最高數量,包括根節點的任何直接的子節點。

  • 樹的形狀似乎是未知/任意的,因此您需要找到一種方法來存儲當前最深的找到的子樹的深度,同時減少要檢查的子節點的數量。