2012-04-08 6 views
1

트리를 사용하여 목록을 반환하고 각 목록이 트리 경로 인 조건 자 (프롤로그)를 작성하려고합니다. 트리는 트리 (Root, LeftTree, RightTree)로 정의됩니다. 제안 사항이 있습니까?목록 목록의 트리 경로

답변

4

이것은 매우 이례적인 일이다 어쩌면 같이, (나무와 DCGS 좋은 적합있는 모든 노드의 단순 목록 사이의 관계에 대한 예를 요청하는 것이 더 일반적이다) :

tree_list(nil, []). 
tree_list(tree(Node,Left,Right), [Lefts,Node,Rights]) :- 
     tree_list(Left, Lefts), 
     tree_list(Right, Rights). 

예 :

?- tree_list(tree(a,tree(b,nil,tree(d,nil,nil)),tree(c,nil,nil)), Ts). 
Ts = [[[], b, [[], d, []]], a, [[], c, []]]. 

이 표현은 (불필요한 낭비 (? 당신이 비어 있지 않은 모든 목록이 3 개 요소를 가질 것이라는 점을 알고있다, 왜 목록 대신 삼항 용어를 사용하지 않음)과 제 생각에 당신 때문에 이미 첫 번째 장소에 트리 표현이 있음)하지만 누가 그게 좋은지 알 수 있습니다. ..