Common lisp 在二叉树中插入节点时出现异常堆栈溢出

Common lisp 在二叉树中插入节点时出现异常堆栈溢出,common-lisp,binary-tree,stack-overflow,clisp,Common Lisp,Binary Tree,Stack Overflow,Clisp,CLISP版本:2.49 叶节 (value (NIL) (NIL)) 非叶节点 (value (value (NIL) (NIL)) (NIL)) 代码(“格式”仅用于调试) 谢谢 [更新] 在(setf(cdr root)’((NIL)(NIL))之前,“root”是(5) 另一个测试 [6]> (setf glb-ls '(5)) (5) [7]> (setf (cdr glb-ls) '((NIL) (NIL))) ((NIL) (NIL)) [8]> glb-ls

CLISP版本:2.49

叶节

(value (NIL) (NIL))
非叶节点

(value (value (NIL) (NIL)) (NIL))
代码(“格式”仅用于调试)

谢谢

[更新]

在(setf(cdr root)’((NIL)(NIL))之前,“root”是(5)

另一个测试

[6]> (setf glb-ls '(5))
(5)
[7]> (setf (cdr glb-ls) '((NIL) (NIL)))
((NIL) (NIL))
[8]> glb-ls
(5 (NIL) (NIL))

此问题已在CLISP常见问题解答中得到解答

在你的情况下,第一个建议是有效的:之后

(setq *print-circle* t)
我们得到

In Left [(10 (NIL) (NIL))] => In Null [(NIL)] => mid [(5)] => [#1=(5 #1#  (NIL))]
i、 例如,您错误地创建了一个圆形结构


另外,您现在欠我:-)

请正确填写您的代码。就像现在呈现的一样,它是不可读的。哦!!!非常感谢。。。。。。。。。但是它还没有结束,我想>。<为什么我得到的是循环列表而不是(10(5(零)(零))(零))???在(setf(cdr root)((NIL)(NIL)))之前,“根”是(5)我在下面做一个测试[6]>(setf glb ls'(5))(5)[7]>(setf(cdr glb ls)((NIL)(NIL))((NIL)(NIL))[8]>glb ls(5(NIL)(NIL))PS:Zorkmid..coin O..O..O??我只有人民币硬币╮(╯▽╰)╭您现在需要(已经回答了!)并提出一个关于您的bug的新问题,但首先您需要学习如何缩进代码。
[6]> (setf glb-ls '(5))
(5)
[7]> (setf (cdr glb-ls) '((NIL) (NIL)))
((NIL) (NIL))
[8]> glb-ls
(5 (NIL) (NIL))
(setq *print-circle* t)
In Left [(10 (NIL) (NIL))] => In Null [(NIL)] => mid [(5)] => [#1=(5 #1#  (NIL))]