我想在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