即时通讯新的使用Prolog,我希望你能帮助我。Prolog。二叉树的节点
我需要得到所有节点与一个名为listofnodes(A4,L)
谓词二叉树。树A4
由这样的:
[[[[[],1,[]],5,[]],
7,
[[],3,[[],4,[]]]],
6,
[[[],10,[]],
8,
[[[],9,[]],11,[[],2,[]]]]]
而且具有这种形式
确定。那听起来很容易,但我需要做谓语只能使用这些构造函数和选择:
empty([]).
root([_,N,_], N). %root node
hi([HI,_,_],HI). %left child
hd([_,_,HD],HD). %right child
dotree(R,HI,HD,[HI,R,HD]). %make a tree
所以我想我可以用下面的代码做到这一点,但它的错误
childs(X,[L,X,R],[L,X,R]).
childs(X,[L,_,_],D) :- childs(X,L,D).
childs(X,[_,_,R],D) :- childs(X,R,D).
listofnodes([],[]).
listofnodes([[],X,[]],[X]).
listofnodes(Abn,P) :- raiz(Abn, N), childs(N,Abn,D), listofnodes(D,P).
任何想法我怎么能解决这个?
谢谢!
什么是raiz/2? – lurker
但是列表中的节点的顺序是什么,为什么使用这种奇怪的嵌套列表树而不是普通的'tree/3'树? – 2017-05-29 08:35:51