列表是二叉樹的葉節點中的值的列表,我試圖弄清楚如何輸出。這給了我所有的節點,但我只需要葉子。二叉樹的葉節點中的值的列表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