获取二叉树的标签

时间:2016-12-05 15:10:53

标签: tree prolog

我正在努力完成任务。 首先,我们必须定义谓词tree/1,其中node(leaf(1), node(leaf(2), leaf(3)))。应该返回真实

tree(leaf(_)).
tree(node(X,Y)) :- tree(X), tree(Y).    

很简单。
现在我必须编写两个谓词,它们应该基本相同。 label/2labels/2
label(B,X)会检查XB是否为标签,并且应打印X=1;X=2;X=3。对于上面给出的例子。(B是二叉树) labels(B,Y)label/2相同,只是Y是包含所有标签的列表。 (Y=[1,2,3])
我现在拥有的:

label(leaf(Y),X) :-
    %print X? 
label(node(Y,Z),X) :-
    label(Y,X), label(Z,X).

labels(leaf(Y),X) :-
    %append Y to X 
labels(node(Y,Z),X) :-
    labels(Y,X), labels(Z,X).

当prolog打印为true并且它为X / Y提供解决方案时,我无法绕过头脑。

0 个答案:

没有答案