prolog - 二叉树第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 更新!
推荐阅读
- relayjs - 在加载查询时从中继存储加载数据
- angular - 如果打开除最后一页以外的任何页面,则“上一页”按钮被锁定
- python - 构建一个scrapy来加载更多并在页面中抓取产品的url
- python-3.x - 如何将使用其他文件的 python 文件转换为可执行文件?
- javascript - Sails 数字和字符串类型的 min、max、minLength、maxLength 给出 userError
- ios - 如何创建像 VNDetectFaceLandmarksRequest 这样的请求,但要检测整个人体,而不仅仅是人脸?
- java - 如何取消 ScheduledExecutorService/Runnable 以停止在 backpress/退出活动时加载 InterstitialAd
- javascript - 如何将带有工具提示的圆圈添加到 d3 图表
- python - 如何为回归设置学习曲线(sklearn)的错误分数?
- square-connect - 使用 Square API 进行中间事务控制