1
我想構建一個謂詞(Prolog),它需要一棵樹並返回一個列表列表,每個列表都是一個樹形路徑。該樹被定義爲 樹(Root,LeftTree,RightTree)。 您有什麼建議嗎?列表列表中的樹路徑
我想構建一個謂詞(Prolog),它需要一棵樹並返回一個列表列表,每個列表都是一個樹形路徑。該樹被定義爲 樹(Root,LeftTree,RightTree)。 您有什麼建議嗎?列表列表中的樹路徑
這是相當不尋常的(這是比較常見的要求,例如對一棵樹和它的所有節點,其DCG中是一個不錯的選擇的平面列表之間的關係),也許是這樣的:
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個要素,那麼爲什麼不使用三元項而不是列表?),在我看來沒有必要(因爲你已經有了樹代表性),但是誰知道它有什麼用處。 ..