二叉树第n级的元素



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

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!

最新更新