所以我在Lisp中编写语法,想要找到语法树的最大深度。
例如,
(SENTENCE (NOUN-PHRASE (DETERMINER THE) (NOUNPLURAL MEN))
(VERB-PHRASE-PAST
((VERBPAST SAW) (NOUN-PHRASE (DETERMINER THE) (NOUNPLURAL DOGS)))))
最大深度应为4(Sentence - > verb-phrase-past - > noun-phrase - > determininer - > the。) 但是列表长度为3,并且在扩展内部列表时始终不正确。
如何编写函数来返回此最大深度(不使用任何外部库)?
答案 0 :(得分:5)
(defun max-depth (tree)
(if (atom tree)
0
(1+ (reduce #'max (mapcar #'max-depth tree)))))
您可能需要更改0值以符合您的规格。
注意:已修改为使用REDUCE
而不是APPLY
。 REDUCE
没有任何列表长度限制。