順番にアクセスされたツリー(必ずしもバイナリツリーではない)のノードのリストを返そうとしています。
ツリーは、サブリストを含むリストとして表されます。たとえば、(a (b) (c (d) (e)))、b - 左サブツリー、(c (d) (e)) - 右サブツリー、a -根。結果は次のようになります: b,a,d,c,e
これは私のコードですが、常に「スタック オーバーフロー」エラーが発生するようです。誰か助けてくれませんか?
;return left-subtree
(defun left-tree(tree)
(cond
((null tree) NIL)
((not (listp tree)) NIL)
(t (car (cdr tree)))
)
)
;return right-tree
(defun right-tree(tree)
(cond
((null tree) NIL)
((not (listp tree)) NIL)
(t (cdr (cdr tree)))
)
)
;perform inorder
(defun inorder(tree)
(if (not (list-length tree)) 0
(append
(inorder (left-tree tree))
(list (car tree))
(inorder (right-tree tree))
)
)
)