1

试图将树结构附加到列表中。在 Erlang 中,我会使用 ++ 运算符进行追加,但在 Prolog 中执行此操作时会不断出现语法错误。

我将包括我的错误代码,它全部与我认为缺少的列表的附加有关。

tree2list(leaf(X),L++[X]).
tree2list(branch(Branch1,Branch2),L):-
tree2List(B1,L1),
tree2List(B2,L2),
L++L1++L2.

任何想法如何解决我的附加问题?

4

1 回答 1

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 ?- */
于 2012-08-29T20:12:57.660 回答