【发布时间】:2013-12-16 21:52:43
【问题描述】:
这是立即学习 Prolog 中的练习 3.5。他们把它放在解释列表之前,所以我需要一个不涉及列表的过程。
任务是交换嵌套二叉树的叶子。如果查询是
swap(tree(tree(leaf(1), leaf(2)), leaf(4)), T).
答案应该是
T = (tree(leaf(4), tree(leaf(2), leaf(1))).
与
swap((X, Y), (Y, X)).
swap(tree(X, Y), T) :-
swap((X, Y), (Y, X)),
T = (Y, X).
我明白了
T = (leaf(4), tree(leaf(1), leaf(2))).
如您所见,leaf(1) 和 leaf(2) 没有被交换。我想要一些提示,甚至你的程序,它应该适用于任何深度的节点。谢谢。
【问题讨论】: