1
ツリーをとり、リストのリストを返す述語(Prolog)を作成したいと思います。各リストはツリーパスです。ツリーは tree(Root、LeftTree、RightTree)と定義されています。 提案はありますか?リストのリストのツリーパス
ツリーをとり、リストのリストを返す述語(Prolog)を作成したいと思います。各リストはツリーパスです。ツリーは tree(Root、LeftTree、RightTree)と定義されています。 提案はありますか?リストのリストのツリーパス
これはかなり珍しいです多分このように、(ツリーとDCGsが良いフィット感であるため、すべてのノードのフラットなリストとの関係のために、たとえば依頼する方が一般的です):
tree_list(nil, []).
tree_list(tree(Node,Left,Right), [Lefts,Node,Rights]) :-
tree_list(Left, Lefts),
tree_list(Right, Rights).
例:
?- tree_list(tree(a,tree(b,nil,tree(d,nil,nil)),tree(c,nil,nil)), Ts).
Ts = [[[], b, [[], d, []]], a, [[], c, []]].
この表現は(不必要な無駄な(?あなたはすべての非空のリストは、3つの要素を持っているだろうことを知っているので、なぜリストの代わりに三元用語を使用していない)と私の意見ではありますので、すでに最初にツリー表現をしている)が、それが何のために良いのかを知っている。 ..