0

二分木のすべてのノード番号を数えるPrologで述語を実現する方法を誰かが私に助けてもらえますか?

例えば:

tree1(tree(1,
        tree(2,
            tree(3,nil,nil),
            tree(4,nil,nil)),
        tree(5,
            tree(6,nil,nil),
            tree(7,nil,nil))
    )
). 

28を返します。誰でも助けることができますか?

4

1 に答える 1

1

自明な再帰的ソリューション。末尾再帰ではありません。

treesum(nil, 0).
treesum(tree(X,T1,T2), S) :-
    treesum(T1, S1), treesum(T2, S2),
    S is X+S1+S2.
于 2013-03-21T09:48:18.933 に答える