尝试将树结构附加到列表中。在Erlang中,我会使用++运算符进行追加,但在Prolog中执行此操作时会出现语法错误。
我将包含我的错误代码,其中包含我认为缺少的列表附加内容。
tree2list(leaf(X),L++[X]).
tree2list(branch(Branch1,Branch2),L):-
tree2List(B1,L1),
tree2List(B2,L2),
L++L1++L2.
如何解决我的追加问题?
答案 0 :(得分:1)
当然,请使用差异列表:
tree2list(leaf(X),[X|A]-A).
tree2list(branch(B1,B2),L-Z):-
tree2list(B1,L-A),
tree2list(B2,A-Z).
/* 7 ?- tree2list(branch(leaf(1),leaf(2)), L-[]).
L = [1, 2] ;
No
8 ?- */
但你的树似乎没有空枝。因此添加它们:
tree2list(empty,A-A).
/* 10 ?- tree2list(branch(branch(leaf(1),leaf(2)),empty), L-[]).
L = [1, 2] ;
No
11 ?- */