首页 > 解决方案 > 二叉树第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.

,但它不起作用。

标签: prologbinary-tree

解决方案


试试这个(我无权访问 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 更新!


推荐阅读