即時通訊新的使用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