【发布时间】:2015-06-07 00:48:37
【问题描述】:
我需要实现一个谓词trav(Tree,List),它执行左到
右树遍历;
其中:树由结构节点(left,right)定义,其中left和right可以是另一个节点或任何Prolog数据项。 List 是树中叶节点值的列表。
例如:
?- trav(x,L).
L = [x].
?- trav(node(1,node(2,node(a,b))),L).
L = [1, 2, a, b] .
到目前为止我所拥有的:
trav(tree,[ ]).
trav(node(Left,Rigth), L) :-
trav(Left, L),
trav(Right, L),
append(Left,[Left|Right],L).
【问题讨论】:
-
你又遇到了你想要一棵树的问题! 首先定义一个谓词
is_tree/1,它说明你认为一棵树是什么。这是非常不常见的,但当然可以有没有元素的节点。这样的节点通常出现在表达式树中。但否则它们不会发生。 -
不是我的意见,这是我被赋予的工作。
标签: tree prolog tree-traversal