我想在Prolog中编写一个程序来确认一个整数b树是否被排序。顺序从小到大。 这是迄今为止我写的,但我没有达到任何坚实的工作。有人知道如何做到这一点?Prolog - 检查一个二叉树是否被排序
Domains
element=integer
tree=a(tree,element,tree);void
Predicates
nondeterm ordre(tree)
Clauses
order(a(_,Node,a(_,Node2,_))):-Node<Node2.
order(a(Esq,Node,Dre)) :-
order(Esq),
write(Node),nl,
order(Dre).
Goal
order(a(a(void,1,void),2,a(a(void,3,void),4,a(void,6,void)))).
巨大的谢谢。
非常感谢那奇妙的回答。虽然我有一个问题。如果我只将一个二叉树传递给谓词is_ordered,如何比较btree(K1,L,R)> K或btree(K1,L,R)
mkll
2012-01-05 09:31:54
每个子树 - 左边或右边的孩子本身就是一棵二叉树。验证每个子树根部的密钥是为了WRT到其父,然后递归地验证子树本身是否有序。 – 2012-01-05 18:13:21