2009-11-08 73 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

我只是给一些提示:

  • 以下级别的数量和包括根节点取决于以下级别的最高数量,包括根节点的任何直接的子节点。

  • 树的形状似乎是未知/任意的,因此您需要找到一种方法来存储当前最深的找到的子树的深度,同时减少要检查的子节点的数量。