ツリーをリストに変更する方法について、別の投稿で他の人のコメントからの提案を試みました。しかし、私は宣言されていない変数をどこか(または何か)持っているので、私のリストの値は正解である[5、2、6]の代わりに[_G667、_G673、_G679]です。私の知る限り、すべての操作は正しい。リストに追加するツリー(更新済み)
flatten(Item , []).
flatten(tree(Left, Val, Right), List) :-
flatten(Left, List1),
append(List1, [E], List2),
flatten(Right, List3),
append(List2, List3, List).
私が使用したクエリ:ここ
がコードである
?- flatten(tree(tree(nil, 2, nil), 5, tree(nil, 6, nil)), L).
誰もが変数の問題を見ていますか?私はそれが最初の行(Itemを持つ)にあると思っていましたが、Item to Itemを変更すると、クエリは直ちにfalseを返します。
私はわずかなPrologプログラムしか書いていないので、これはまだ私にとっては新しい概念です。
これはOPが求めているものを答えていません。 –