只是一個簡單的二叉樹,我想找到最大的節點。 (t(t(nil,1,nil),2,t(nil,3,nil)),4,t(t(t(nil,8,nil),5,nil) 6,t(nil,7,nil)))prolog遞歸發現最大節點
int L(t,max) {
if(t=null) return max;
if(max<t.root) max = t.root;
LN(t,max);
RN(t,max);
return max;
}
L(tree,tree.root);
我只是無法包裹我的頭周圍應用到序言。這裏我顯示每個節點。我得到,但我不明白如何保存最大值,並保持遞歸。
tree(nil).
tree(t(L,Root,R)) :-
tree(L),
tree(R),
write(Root).
編輯:它檢查所有的葉節點,但忽略了T(零,8,無)
tree(nil,0).
tree(t(nil,Q,nil),Q) :- !.
tree(t(nil,Q,_),Q).
tree(t(_,Q,nil),Q).
tree(t(L,_,R),Max) :-
tree(L, LValue),
tree(R, RValue),
max(LValue,RValue,Max).
我在下面的評論中注意到你會發現它。如果你能在這裏回答你自己的問題,那將是非常棒的。 – Rich 2008-12-04 04:21:21