我工作的一個樹轉換成整數列表的功能。我的問題是,當我只需要添加一個或兩個整數時,我可以追加到列表中。但我似乎無法追加三個整數沒有得到這個:如何將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]'?我錯過了什麼嗎? –