我工作的一个树转换成整数列表的功能。我的问题是,当我只需要添加一个或两个整数时,我可以追加到列表中。但我似乎无法追加三个整数没有得到这个:如何将1-2-3树平铺到列表中?
[[2], 3, 4]
,当我应该得到[2, 3, 4]
。
我知道,这个问题从这个声明
append([Temp1 | Temp2] , Temp3, L)
凡TEMP1,TEMP2,和TEMP3是我想补充的整数茎。 L是目前包含树中所有整数的主要列表。
我想有两个附加声明,但返回false
布尔值,而不是[2, 3, 4]
。我试着在[ | ]
附近移动,但我不认为我对他们有足够的了解可以有所作为。
附加/ 3页也只上升到连接两个列表成为一个。任何帮助将不胜感激:)
编辑:我的代码如下,我添加了我的测试示例。
chopTree(leaf(_), []).
chopTree(node1(Leaf, Node), L) :-
chopTree(Node, Temp),
append([], [Leaf | Temp], L).
chopTree(node2(Leaf, Node1, Node2), L) :-
chopTree(Node1, Temp1),
chopTree(Node2, Temp2),
append(Temp1, [Leaf | Temp2], L).
chopTree(node3(_, Node1, Node2, Node3), L) :-
chopTree(Node1, Temp1),
chopTree(Node2, Temp2),
chopTree(Node3, Temp3),
append([Temp1 | Temp2] , Temp3, L).
query(E) :-
chopTree(node3(1,
node1(2, leaf(1)),
node2(3, leaf(1), leaf(1)),
node1(4, leaf(1))),
E).
你的代码是...?包括谓词定义和查询。 –
对不起,我认为这会是一个更普遍的问题。我添加了我的代码,以及我使用的查询。 –
为什么不能简单地写'L = [TEMP1,TEMP2,TEMP3]'?我错过了什么吗? –