列表是二叉树的叶节点中的值的列表,我试图弄清楚如何输出。这给了我所有的节点,但我只需要叶子。二叉树的叶节点中的值的列表T
lea(nil,[]).
lea(t(X,L,R),[X|L]) :-
lea(L,L1),
lea(R,L2),
append(L1,L2,L).
运行这给了我:
?- lea(t(a,t(b,t(d,nil,nil),t(e,nil,nil)),t(c,nil,t(f,t(g,nil,nil),nil))),
List).
List = [a, b, d, e, c, f, g]
,但我需要
List = [d, e,g]
是否有可能。
不确定,但我认为(至少)在SWI-Prolog中可以直接使用( - >)/ 2构造 – CapelliC 2015-03-31 13:05:09
否,'( - >)/ 2'立即提交,可能会删除部分解决方案组。 – repeat 2015-03-31 13:54:27
不应该'调用(Then_0)'读'phrase(Then_0)'?那么你将不再需要“添加// 1”和“空// 0”。 '(=)/ 3'比'equal_truth/3'更紧凑。 Ergo'if_(L-R = nil-nil,[X],[])'。 – false 2015-03-31 16:34:26