求大神帮帮忙,二叉树的问题
prolog吧
全部回复
仅看楼主
level 1
wl52070 楼主
flatten (Leaf x) = [x]
flatten (Node l x r) = flatten l ++ x : flatten r
上面这个是Haskell程序,要把它转换成PROLOG程序,保证输出为:
flatten(node(node(leaf(1),2,leaf(3)),4,leaf(5)),[1,2,3,4,5])
求问这个程序该怎么写啊?
2017年07月09日 14点07分 1
level 13
虽然都是声明式语言,haskell有时候省略太多,反而更难懂。反正我是没看懂这段haskell是什么意思。不过知道要求是二叉树的中序遍历,prolog代码:
append([], X, X).
append([A|X], Y, [A|Z]) :- append(X,Y,Z).
flatten(leaf(X),[X]).
flatten(node(L,X,R),List):-
flatten(L,LeftList),
flatten(R,RightList),
append(LeftList,[X|RightList],List),
2017年07月18日 09点07分 2
最后一句结尾标点错了,是句号.
2017年07月18日 09点07分
1