【发布时间】:2023-11-10 16:32:01
【问题描述】:
我有这个 Prolog 谓词用于 PreOrder 遍历树:
preOrder(nil, []).
preOrder(node(X, nil, nil), [X]).
preOrder(node(X, L, _), [X|T]) :- preOrder(L, T).
preOrder(node(X, _, R), [X|T]) :- preOrder(R, T).
问题是,它返回一个不完整的列表。例如,我得到:
?- preOrder(node(1, node(2, node(3,nil,nil), node(4,nil,nil)), node(5,nil,nil)), L).
L = [1,2,3]
什么时候应该是L=[1,2,3,4,5]。
为什么会突然停止?
【问题讨论】:
标签: prolog binary-tree tree-traversal preorder