정수의 b- 트리가 정렬되었는지 확인하는 프로그램을 Prolog에 작성하고 싶습니다. 순서는 점점 작아집니다. 이것은 내가 지금까지 작성했지만 굳건한 작업에 도달하지는 못합니다. 누군가 그 일을하는 방법을 알고 있습니까?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)))).
큰 감사. 빈 트리를 나타내는 원자 btree
(이전과 동일 같은 트리 구조 사용
정말 고맙습니다. 대답. 질문 있긴하지만. 하나의 이진 트리를 is_ordered 술어에만 전달하면 btree (K1, L, R)> K 또는 btree (K1, L, R)
mkll
각 하위 트리 - 왼쪽 또는 오른쪽 하위 트리 자체는 이진 트리입니다. 각 서브 트리의 루트에있는 키가 상위에 대해 WRT 순서인지 확인한 다음, 서브 트리 자체가 순서대로 있는지 재귀 적으로 확인하십시오. –