프롤로그에서 값을 리턴하는 술어를 얻으려면 어떻게해야합니까?트리가 최소 힙인지 점검하십시오.
트리의 노드를 찾고 최소 힙이 있는지 확인해야합니다. 내가 그것을 이런 식 같은데요 - 지금까지
getnode(tree(_, node, _), node).
내 코드는 다음과
minheap(tree(L, Node, empty)) :-
getnode(L, Val),
Node =< Val,
minheap(L).
minheap(tree(empty, Node, R)) :-
getnode(R, Val),
Node =< Val,
minheap(R).
getnode(tree(_,n,_) , n).
입력 것은 사실이어야 유형 -
minheap(tree(empty,3,tree(tree(empty,8,empty),5,tree(empty,7,empty)))).
출력이다.
'tree/3'의 형식은 무엇입니까? '나무 (왼쪽, 값, 오른쪽)'? –
예, 정확함 –
노드를 루트로하는 트리는 노드 값이 모든 노드 (일반적으로 : 양쪽 자식 노드)의 값보다 작거나 (적어도 둘 이상인) 자식 노드를 기반으로하는 모든 하위 트리와 자식을 루틴으로하는 모든 하위 트리 또한 최소 힙입니다. 코드가 주어진 노드의 _all_ 자식을 테스트 할 수 있습니까? – CiaPan