如何找到给定级别的二叉树的所有元素?我试过这个:
nlevel(void,_,[]).
nlevel(tree(X,L,R),0,[X]).
nlevel(tree(X,L,R),N,Zs):-
nlevel(L,N1,Xs),
nlevel(R,N1,Ys),
append(Xs,Ys,Zs),
N is N1+1.
,但它不起作用。
试试这个(我没有访问Prolog的权限来检查(
nlevel(void, _, []).
nlevel(tree(X,L,R), 0, [X]). % (* end of recursion *)
nlevel(tree(X,L,R), N, Zs):-
N > 0,
N1 is N-1, % (* go one more step down, with N known *)
nlevel(L, N1, Xs),
nlevel(R, N1, Ys),
append(Xs, Ys, Zs). % (* possible to use difference lists to append *)
更新感谢Will Ness!