二叉树第n层的元素

Elements of nth level of binary tree

如何找到给定级别的二叉树的所有元素? 我试过这个:

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!