如何在prolog中测试二叉树

时间:2016-12-03 08:43:47

标签: prolog binary-tree

我想测试这个prolog程序:

binary_tree(void).

binary_tree(tree(_Element,Left,Right)):-binary_tree(Left),binary_tree(Right).

test(tree(a,tree(b,tree(d,void,void),void),tree(c,void,void))).

当我执行它时:

test(X), binary_tree(X).

我得到了

X = tree(a, tree(b, tree(d, void, void), void), tree(c, void, void)).

(我应该得到" true"相反)

我做错了什么?

由于

1 个答案:

答案 0 :(得分:2)

谁说你应该得到true?调用Prolog谓词可能成功或失败。成功时,他们会回答一个变量替换,就像你的情况一样。您的Prolog系统的答案表明您的测试成功,正如您所期望的那样。

如果不能给出变量替换,通常只会获得true,因为查询不包含任何变量。如果查询失败,您将获得falsefail但不会进行变量替换。